MVC ASP.net会话为空

时间:2010-09-08 14:41:47

标签: asp.net-mvc session null

我有以下代码,直到其他人在网站上放置了其他代码,这些代码现在就搞定了。

这是我的代码:

var existingContext = HttpContext.Current;
var writer = new StringWriter();
var response = new HttpResponse(writer);
var context = new HttpContext(existingContext.Request, response) { User = existingContext.User };
HttpContext.Current = context;
HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Default);
HttpContext.Current.Session["Test"] = "test";
for (Int32 i = 0; i < existingContext.Session.Count; i++)
{
    HttpContext.Current.Session.Add(existingContext.Session.Keys[i], existingContext.Session[i]);
}

这背后的想法是能够捕获视图的输出并将其渲染为pdf。现在我唯一的问题是,当我将上下文分配回HttpContext.Current时,会话为空。我需要能够初始化会话,以便我可以为其分配变量。

我还要补充一点,这是在静态类

public static class ControllerExtensions

任何线索?

3 个答案:

答案 0 :(得分:1)

如果这是在HttpHandler内部发生的,则需要将IRequiresSessionState接口添加到处理程序中以使会话可用 -

public class HttpPdfWriteHandler : IHttpHandler, IRequiresSessionState {
     [...]
}

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.irequiressessionstate.aspx

答案 1 :(得分:1)

我现在似乎已经解决了这个问题,那就是删除这些行:

            var context = new HttpContext(existingContext.Request, response) { User = existingContext.User };
        HttpContext.Current = context;
        HttpContext.Current.Request.
        for (Int32 i = 0; i < existingContext.Session.Count; i++)
        {
            HttpContext.Current.Session.Add(existingContext.Session.Keys[i], existingContext.Session[i]);
        }

答案 2 :(得分:0)

1)开始 - &gt;管理工具 - &gt;服务

2)右键单击ASP.NET State Service并单击“开始”

*另外,您可以将服务设置为自动,以便在重新启动后能够正常工作。

有关详细信息,请查看我的博文:http://jamshidhashimi.com/2011/03/16/unable-to-make-the-session-state-request-to-the-session-state-server/ 参考: Unable to make the session state request to the session state server