2010-09-08 4 views
1

У меня есть следующий код, который был в порядке, пока кто-то еще не добавил какой-то другой код на сайт, который сортирует его сейчас.MVC ASP.net session is 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, сеанс имеет значение null. Мне нужно иметь возможность инициализировать сеанс, чтобы я мог назначать в него переменные.

я также добавить, что это внутри статического класса

public static class ControllerExtensions 

Есть улики?

+0

жаль вид кода, что сброшенные немного или я сделал что-то неправильно код должен быть: –

+0

вар existingContext = HttpContext.Current; var writer = new StringWriter(); var response = new HttpResponse (автор); var context = new HttpContext (existingContext.Request, response) {User = existingContext.User}; HttpContext.Current = context; HttpContext.Current.Session ["Test"] = "test"; for (Int32 i = 0; i

ответ

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

К сожалению, это происходит внутри статического класса public static class ControllerExtensions –

+0

У меня есть исходный код: http://www.jimzimmerman.com/blog/2009/10/06/PdfResult+A+Custom+ActionResult + In + ASPNET + MVC.aspx и http://jamesmcc.wordpress.com/2010/06/02/pdfresult-a-custom-actionresult-in-asp-net-mvc2-updated/ –

0

1) Пуск-> Администрирование -> Службы

2) щелкните правой кнопкой мыши по ASP.NET государственной службы и нажмите кнопку «Пуск»

* дополнительно можно установить услугу автоматической, так что он будет работать после перезагрузки.

Для получения более подробной информации вы можете проверить мой блог: 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