このアプローチの問題は、CreateSessionIDが実際にセッションを作成しないことです。名前が示唆するように、固有のセッションIDだけが作成されます。あなたはMSDN documentationを見れば、それは
言うこのメソッドは、アプリケーションコードから と呼ばれることを意図していません。
もう少し読むと、カスタムセッションIDマネージャによってメソッドがオーバーライドされることがわかります。これは、web.configを編集してセッション管理システムに統合することができます。
つまり、現在のCreateSessionIDの使用は、あなたがしたいことをしていません。
実際にWebサービスでセッション状態を使用する場合は、this articleを参照する必要があります。
簡潔には、[WebMethod]
属性にEnableSession=true
パラメータを追加する必要があります。その後、Context.Session
で自動的にセッションにアクセスできます。 IISがあなたのためにすべてを処理するので、これはサービスを介してセッションIDを渡す必要はないことに注意してください。ユーザーが各要求に合格する必要がありますが、それだけでユーザーを検証するために使用されることのトークンを作成するために、(好ましくは、あなたが何か他のものを使用すると思いますが)
あなたははCreateSessionID()
メソッドを使用することができます。それに基づいてセッションを再生成することはできませんでした。このルートを使用する場合は、HTTPS経由でサービスにアクセスしていることを確認してください。さもなければ、どんな盗聴者もプレーンテキストでそのトークンを見ることになります(ただしIPアドレス/ユーザエージェントの文字列/ etcをチェックすると軽減できます)。
希望します。