2011-12-22 1 views
1

Я использую:Как правильно установить сеансы в HttpContext?

if (string.IsNullOrEmpty(myHttpContext.Request.QueryString["code"])) 
    { 

     if (myHttpContext.Session == null || myHttpContext.Session["code"] == null) 
     { 
      OutputError("Code", "Invalid code."); 
     } 
     else 
     { 
      code = myHttpContext.Session["code"].ToString(); 
     } 
    } 
    else 
    { 
     code = myHttpContext.Request.QueryString["code"]; 
     myHttpContext.Session.Add("code", code); 
    } 

Однако я получаю сообщение об ошибке: ссылка на объект не указывает на экземпляр объекта.

Для: myHttpContext.Session.Add («код», код);

Все, что я хочу сделать, это установить простой сеанс, кто-то, пожалуйста, помогите, это сводит меня с ума.

ответ

4

Внедрен класс IHttpHandler (ashx) IRequireSessionState? В противном случае объект Session не будет доступен.

public class MyHandler : IHttpHandler, IRequireSessionState 
{ 
    public bool IsReusable { get { return false; } } 

    public void ProcessRequest(HttpContext ctx) 
    { 
     // your code here 
    } 
} 
+0

Спустя годы это было первый пост, который я нашел, дал это решение. Это требует большего количества оборотов. :) В моем случае интерфейс, который я использовал, был 'System.Web.SessionState.IReadOnlySessionState'. – Andrew

0

Вы забыли if (myHttpContext != null)

Однако вы можете использовать всегда, настоящий контекст вместо: HttpContext.Current

// if querystring parameter has a value 
if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["code"])) 
    // then use its value 

же для сессии (если он присутствует - см @davisleeps ответ на это) https://stackoverflow.com/a/8598088/179972

+0

Все у меня есть CurrentHandler и CurrentNotification. – Darren

+0

Это прекрасно работает. Я не могу поверить, что не могу делать простые сеансы с этим, мне придется использовать файлы cookie. – Darren

+0

Это не в вашем первоначальном вопросе, но проверьте их также на null, если вы не уверены. Вы можете обновить свой вопрос, чтобы предоставить больше информации и больше кода, если считаете, что это имеет отношение к проблеме. –

0

Я считаю, что вы могли бы хотеть попробовать

myHttpContext.Session["code"] = code;