5

asp.net アプリケーションと Web サービス (asmx) が同じアプリケーションにありますが、aspx ファイルの同じフォルダーにはありません。また、Web サービスを使用する winform アプリケーションもあります。[WebMethod(EnableSession = true)] で Web サービス メソッドをマークしましたが、Web サービスのアプリケーションにある同じセッション値を共有できません。winform アプリケーションはアプリケーションから sessionID にアクセスでき、次のコードを使用しています

Uri uri = new Uri(ServerServiceUrl);
_cookieContainer = new CookieContainer();
_cookieContainer.Add(new Cookie("ASP.NET_SessionId", SessionID, "/", uri.Host));

私の質問は次のとおりです。ウェブサービスからアプリケーションセッションにアクセスできないという、欠けているものや間違っているものはありますか?

4

2 に答える 2

1

なぜwinformsアプリでセッションを「ハイジャック」できないのか、はっきりとはわかりません。あなたがしていることは、あなたが望んでいることを正確に実行するはずです。

ユーザーのセッションストアの代わりに、アプリケーションキャッシュ(Javaサービスからの応答をキャッシュするため)を使用することを提案したかっただけです。これには次の利点があります。

  • a)キャッシュされた情報が複数のユーザーに適用できる場合(アクセス制御など)、同じキャッシュされた情報を複数のユーザーに使用でき、セッションごとにフェッチすることはできません。
  • b)セッションデータ(セッションの存続期間中のみ存続し、古い情報を削除するのを忘れると成長する危険性があります)よりも、キャッシュされる期間/スカベンジされるタイミングをより細かく制御できます)
  • c)セッションハイジャックを機能させることができなくても、どのセッションからでもキャッシュ内のデータにアクセスできます。
于 2010-05-03T19:05:54.663 に答える
0

から Web サービス クラスを継承しようとしましたSystem.Web.SessionState.IRequiresSessionStateか?

通常は http ハンドラーに使用されますが、Web サービスは同じマーカー インターフェイスを使用しているようです。

于 2010-05-02T20:49:19.920 に答える