Сеанс MVC ASP.net является нулевым - PullRequest
1 голос
/ 08 сентября 2010

У меня есть следующий код, который был в порядке, пока кто-то другой не поместил какой-либо другой код на сайт, который сейчас его портит.

Это мой код:

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 ]

1 голос
/ 08 сентября 2010

Кажется, я решил проблему на данный момент, и это было удалить строки:

            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 голос
/ 08 сентября 2010

Если это происходит внутри HttpHandler, вам нужно добавить интерфейс IRequiresSessionState в ваш обработчик, чтобы сеанс был доступен -

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

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

0 голосов
/ 27 апреля 2013

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

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

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

Для более подробной информации вы можете проверить мою запись в блоге: http://jamshidhashimi.com/2011/03/16/unable-to-make-the-session-state-request-to-the-session-state-server/ ref: Невозможно сделать запрос состояния сеанса на сервер состояния сеанса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...