我有以下代码,直到其他人在网站上放置了其他代码,这些代码现在就搞定了。
这是我的代码:
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
任何线索?
答案 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