2010-09-08 86 views
1

我有下面的代碼,直到其他人把其他代碼放在現在分類的網站中。MVC ASP.net會話是空的

這是我的代碼:

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

對不起代碼視圖事情搞砸了一點還是我做錯了什麼的代碼應該是: – 2010-09-08 14:44:00

+0

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.Session [「Test」] =「test」; (Int32 i = 0; i 2010-09-08 14:45:05

回答

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]); 
     } 
1

如果這是一個HttpHandler的內部發生,你需要將IRequiresSessionState接口添加到您的處理程序會話可用 -

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

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

+0

不幸的是這是發生在一個靜態類 公共靜態類ControllerExtensions – 2010-09-08 15:02:37

+0

我從原始代碼:http://www.jimzimmerman.com/blog/2009/10/06/PdfResult+A+Custom+ActionResult + In + ASPNET + MVC.aspx and http://jamesmcc.wordpress.com/2010/06/02/pdfresult-a-custom-actionresult-in-asp-net-mvc2-updated/ – 2010-09-08 15:08:14