2012-04-25 22 views
1

標準的な方法でVB6 DLL(COM)オブジェクトを使用して、多くの従来のASP Webサイトを作成しています。 DLLはregsvr32'dであり、ページはServer.CreateObjectを使用してDLLに必要なオブジェクトのインスタンスを作成します。このオブジェクトは作成されるオブジェクトのOnStartPage関数をトリガーし、ScriptingContextを渡して要求を取得しますクエリーストリング、フォーム)情報、セッション情報の読み取り/更新、およびクッキー情報の読み取り/書き込み(etc)明確にするために、あなたは/更新ScriptingContextを使用してクッキーの値を格納する方法は、コードベースの上に、完全なネットのオーバーホールを行うpreperationで.Netへのアップグレード後にScriptingContextレスポンスクッキーを設定する方法

objSC.Response.Cookies(Key) = Value 

は(最初のステップとして)、我々はを通じてコードを走っています。 Net 2008 VBのアップグレードツールは、いくつかのマイナーコードの変更を行い、interopライブラリ(ADODB、ASPTypeLibrary、CDOなど)への参照を設定し、.NetオブジェクトをCOMに公開するのに必要な属性を追加します。アップグレードツールによって残されたコメント(todos)によってガイドされたいくつかの微調整は、ASPTypeLibrary(Interop)、Response.Cookies()を介して上記のコードを使用してCookieを更新/保存しようとしたものを除いて、コレクションは読み取り専用です(Cookieを作成する明白な方法はありません)。

違反行をコメントアウトすると、コードがコンパイルされます.GACにこの新しい.Net DLL(およびその相互運用機能DLL)を登録し、regasmを使用してCOMで登録し、従来のASPサイトは何も起こらないかのように動作します(Cookieの作成を除く)。Server.CreateObjectを使用してCOMオブジェクトと考えるものを作成し、OnStartPageへの呼び出しをトリガーしてScriptingContextを渡します。

コードベースは.Netに "アップグレード"されていますが、従来のASPパイプラインで公開されているように、多くのinteropライブラリを使用して以前と同様にASPTypeLibrary.ScriptingContextオブジェクトを使用しています。

誰もこのシナリオでクッキーの書き込み/保存方法を知っていますか?

+0

あなたはASP.NET/VB.NETにあるものをASP/VBScriptをアップグレードしていますか?しかし、それが真のSLAKsだった場合、削除された答えは真となります。あなたは何を正確にしていますか?どのようなビットが「アップグレードされましたか」? DLLを.NETコードベースにアップグレードして、それをASP classicやその他のもので使用していますか? – AnthonyWJones

+0

私は説明のために書き直しました。 –

答えて

3

クッキーアイテムをIWriteCookieインターフェイスに変換する必要があります。それから書き込み可能になります。

あなたはこのような IReadCookieIStringListなどの他のインターフェースをチェックアウトすることができます
Imports ASPTypeLibrary 
Public Class Test 
    Private oContext As ASPTypeLibrary.ScriptingContext 
    Private oResponse As ASPTypeLibrary.Response 
    Public Sub OnStartPage(e As ScriptingContext) 
     oContext = e 
     oResponse = oContext.Response 
     With CType(oResponse.Cookies("fromdotnet"), IWriteCookie) 
      .Item = String.Format("hello from .Net : {0}", Date.UtcNow()) 
      '.Domain = "" 
      '.Path = "/" 
      '.Secure = False 
     End With 
    End Sub 
End Class 

IRequestDictionaryなど

ノートでその:直前の呼び出し元に対する

完全な信頼。このメンバーは、部分的に信頼できるコードでは使用できません。

別のオプションがあります:ContextUtil.GetNamedProperty Method

System.EnterpriseServices.ContextUtil.GetNamedProperty("Response").Cookies("fromdotnet") = "hello" 
+0

親切に、ありがとう、感謝します! –

関連する問題