Asp.Net 会话在 ashx 文件中为空
Posted
技术标签:
【中文标题】Asp.Net 会话在 ashx 文件中为空【英文标题】:Asp.Net Session is null in ashx file 【发布时间】:2011-01-10 12:31:20 【问题描述】:我正在尝试访问 Asp.Net ashx 处理程序中的 Session 变量,如下所示。
public void ProcessRequest (HttpContext context)
context.Session["VariableName"] = Id;
但 context.Session 在上述方法中始终为 Null。如何访问 ashx 文件中的 Session 对象?
【问题讨论】:
【参考方案1】:您必须“实现”IRequiresSessionState 或 IReadOnlySessionState,前者提供对会话的完全访问权限,而后者提供只读访问权限。
我在这里引用“实现”是因为这两个是所谓的“marker interfaces”,这意味着它们没有成员。
【讨论】:
赞一个好先生。我唯一的遗憾是我只能给一个。 太棒了!至于“标记接口”,如果他们把它做成Annotations不是更好吗? “实现”Anton 的意思是:公共类 ClassName : IHttpHandler, System.Web.SessionState.IRequiresSessionState...【参考方案2】:在 VB 中,像这样实现 Anton 提到的接口(IRequiresSessionState 或 IReadOnlySessionState):
Public Class MyAshxFile
Implements System.Web.IHttpHandler
Implements System.Web.SessionState.IRequiresSessionState ''need this for session variables
Implements System.Web.SessionState.IReadOnlySessionState ''need this for session variables
【讨论】:
以上是关于Asp.Net 会话在 ashx 文件中为空的主要内容,如果未能解决你的问题,请参考以下文章
HttpContext 在以 ASP.NET 兼容模式运行的 WCF 服务中为空
Ajax 传递空值但控制器在 ASP.NET MVC 中为空