【问题标题】:Make HTTPHandler (ashx) to place session cookie in ASP.NET使 HTTPHandler (ashx) 在 ASP.NET 中放置会话 cookie
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 我尝试了所有组合,很抱歉没有具体说明。我认为问题在于根本没有设置cookie。如果我手动调用 Default.aspx 网站,则会话按 HTTPHandler 的预期工作
  • 好的,好吧......我们会继续努力,但您肯定只需要实现 IRequireSessionState。我将在对您的问题的评论中询问更多详细信息。
猜你喜欢
  • 2010-11-09
  • 2011-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
相关资源
最近更新 更多