Ashx文件中的HttpContext.Current.Session为null

Mos*_*Feu 39 .net c# asp.net session generic-handler

我看到了一些问题(这里这里),但他们没有回答我的问题.我试图使用"ajax.ashx"文件调用Ajax,并在函数中访问Session.出于某种原因,Session对象本身的值为null.

使用示例:

Session = HttpContext.Current.Session // This is null
Run Code Online (Sandbox Code Playgroud)

要么:

public virtual void ProcessRequest(HttpContext context)
{
    System.Web.SessionState.HttpSessionState Session = context.Session; 
    // This is null
}
Run Code Online (Sandbox Code Playgroud)

在Web.config中:

<sessionState timeout="1800"></sessionState>
Run Code Online (Sandbox Code Playgroud)

Ari*_*tos 89

您必须在处理程序IRequiresSessionState上添加它的声明:

public class YourHandleName : IHttpHandler, IRequiresSessionState 
{
...
Run Code Online (Sandbox Code Playgroud)

默认情况下,处理程序未与会话连接以保持最小值,方法是添加将会IRequiresSessionState话附加到会话中.

  • @StevendeSalas好的,但只是为了你的知识,最好避免会话,如果你可以,特别是处理程序,因为请求会话的页面或处理程序锁定整个站点调用,直到结束http://stackoverflow.com/questions/11629600 /不-ASP净web的表单 - 防止-A-双击提交/ 11629664#11629664 (2认同)