在webservice和asp.net应用程序之间共享会话

Ale*_*dez 5 asp.net session web-services sharing c#-2.0

我有一个asp.net应用程序和webservices(asmx),它们驻留在同一个应用程序中,但不在aspx文件的同一个文件夹中.我还有一个使用webservices的winform应用程序.我用[WebMethod(EnableSession = true)]标记了webservice方法,但是我无法共享webservices中应用程序上的相同会话值.winform应用程序可以从应用程序访问sessionID,我使用以下代码

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

我的问题是:是否有一些我遗漏或做错的事情,我无法从网络服务访问应用程序sessioin?

Chr*_*ell 1

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

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

  • a) 如果缓存的信息适用于多个单独的用户(例如,访问控制),则相同的缓存信息可以用于多个用户,而不是为每个会话获取。
  • b) 与会话数据相比,您可以更好地控制缓存的时间/何时清除它们(会话数据仅在会话的生命周期内存在,并且如果您忘记删除旧信息,则存在不断增长的危险)
  • c) 如果您无法使会话劫持起作用,您仍然可以从任何会话访问缓存中的数据。