如何在 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 - 在 Session_Start-Method HttpContext.Current.Session("init") = 0 的 Global.asax 文件中保存会话状态中的某些内容
不同的尝试,但应该避免:
- 在调用 ashx 文件之前,调用 Default.aspx 文件会放置一个会话 cookie,因此会话会被维护。
- 使用数据库和时间戳实现“自己的”会话。
版本:IIS 6.0