2015-06-01 3 views
1

Я пытаюсь вызвать обработчик ashx с страницы asp.net и извлекать данные xml из обработчика.Повторное использование того же сеанса с asp.net aspx page to ashx handler

var url = "http://localhost/Settings/MyHandler.ashx?errors=false"; 

     var request = (HttpWebRequest)WebRequest.Create(url); 
     request.Method = "GET"; 

     using (var response = (HttpWebResponse)request.GetResponse()) 
     { 
      using (var stm = response.GetResponseStream()) 
      { 
       using (var sr = new StreamReader(stm)) 
       { 
        var data= sr.ReadToEnd(); 
       } 
      } 
     } 

Теперь, в связи с характером asp.net создает новый сеанс для каждого WebRequest, я не в состоянии использовать тот же сеанс с asp.net страницы ASHx обработчика.

Оба файла относятся к одному проекту.

Как я могу повторно использовать один и тот же сеанс из asp.net для обработчика ashx.?

Обратите внимание: у меня уже был отмечен мой обработчик для реализации IRequireSessionState, поэтому он имеет сеанс. Моя проблема заключается в том, что aspx-страница и обработчик ashx имеют два разных сеанса. Каждый раз, когда я вызываю обработчик, он создает новый сеанс. Но вместо этого я должен повторно использовать один и тот же сеанс страницы aspx внутри моего обработчика, то есть я должен выполнить обработчик в том же контексте запроса моей страницы.

ответ

1

Если вы укажете, что ваш .ashx-класс использует интерфейс IRequiresSessionState, например.

public class myClass : IHttpHandler, System.Web.SessionState.IRequiresSessionState 

{

}

Тогда вы должны быть в состоянии получить доступ к текущим значениям сеанса через HttpContext.Current.Session

+0

мой обработчик уже реализует IRequireSessionState, что не решить мою проблему каждый раз, когда я вызываю обработчик, он создает новую сессию –

 Смежные вопросы

  • Нет связанных вопросов^_^