5

我有一个 asp.net 应用程序和 webservices (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));

我的问题是:是否有什么我遗漏或做错了我无法从 Web 服务访问应用程序会话?

4

2 回答 2

1

我无法解释为什么你不能让 winforms 应用程序“劫持”会话——你正在做的事情看起来应该完全符合你的要求。

我只想建议您使用应用程序缓存(缓存来自您的 java 服务的响应)而不是用户的会话存储。这具有以下优点: -

  • a) 如果缓存信息适用于多个用户(例如访问受控),那么相同的缓存信息可以用于多个用户,而不是为每个会话获取。
  • b)与会话数据相比,您可以更好地控制缓存的时间/何时清除它们(会话数据只存在于会话的生命周期中,如果您忘记删除旧信息,则存在增长和增长的危险)
  • c) 如果你没有设法让你的会话劫持工作,你仍然可以从任何会话访问缓存中的数据。
于 2010-05-03T19:05:54.663 回答
0

您是否尝试过从 继承您的网络服务类System.Web.SessionState.IRequiresSessionState

它通常用于 http 处理程序,但 web 服务似乎使用相同的标记接口。

于 2010-05-02T20:49:19.920 回答