使HTTPHandler(ashx)在ASP.NET中放置会话cookie

时间:2012-05-01 14:21:09

标签: asp.net session cookies httphandler ashx

如何在ashx文件中创建HTTPHandler PLACE由ASP.NET管理的SessionCookie?似乎,ashx-File的调用没有放置cookie,因此不能维护会话。

背景:我即将编写基于HTTP的Web服务包装器。不同的客户端使用给定的参数调用我提供的URL。我检查凭据,调用第三方Web服务并将更改的结果发送回客户端。第三方Web服务提供商通过合同要求为每个不同的客户呼叫提供SessionID。

解决方案:HTTPHandler似乎是最佳选择。所以我创建了一个网站项目。不幸的是,直接调用ashx-File似乎没有为响应添加会话cookie,因此正在为来自同一客户端的每个调用创建一个新的SessionID。

我做了以下相关的事情:

  • 实现了标记接口IRequiresSessionState或/和 IReadOnlySessionState
  • 已添加<sessionState mode="InProc" cookieless="false" timeout="20" /> 到web.config
  • 在会话状态中保存Global.asax文件中的内容 Session_Start-Method HttpContext.Current.Session(“init”)= 0

不同的尝试有效,但应该避免:

  • 在调用ashx-File之前,调用Default.aspx文件会放置一个会话cookie,因此正在维护会话。
  • 使用数据库和时间戳实现“自己的”会话。

版本:IIS 6.0

1 个答案:

答案 0 :(得分:0)

IRequireSessionStateIRequireReadOnlySessionState是互斥的。如果您打算以任何方式更新会话状态,那么您应该只实现前者。