【发布时间】:2012-05-01 14:21:08
【问题描述】:
如何在 ashx 文件中创建 HTTPHandler PLACE 由 ASP.NET 管理的 SessionCookie?看来,ashx-File 的调用并没有放置 cookie,因此无法维持会话。
背景:我即将编写基于 HTTP 的 Web 服务包装器。不同的客户端调用我提供给他们的 URL 并带有给定的参数。我检查凭据,调用第 3 方 Web 服务并将更改的结果返回给客户端。第 3 方 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 文件之前,调用 Default.aspx 文件会放置一个会话 cookie,因此会保持会话。
- 使用数据库和时间戳实现“自己的”会话。
版本:IIS 6.0
【问题讨论】:
-
这是什么版本的 IIS,你能分享你的 web.config (system.web) 的相关部分吗?
标签: asp.net session cookies httphandler ashx