Почему я не могу установить элемент в HttpContext в модуле, а затем вернуть его обратно в мой обработчик? - PullRequest
1 голос
/ 15 апреля 2009

В HttpModule я помещаю элемент в контекст, как это:

HttpContext.Current.Items.Add("MyKey", "Hello world!");

Непосредственно под этим кодом (все еще внутри модуля) я могу извлечь эту строку из коллекции, поэтому я знаю, что она была добавлена.

Перенесемся в мой фактический обработчик (веб-форма - .aspx). Я пытаюсь вернуть этот предмет:

string myString = HttpContext.Current.Items["MyKey"].ToString();

К сожалению, это NULL - предмета там нет.

Я развернул коллекцию, и к тому времени, когда она попадает в мой обработчик, коллекция Items имеет два ключа:

  • AspSession
  • AspSessionIDManagerInitializeRequestCalled

После того, как я установил Item в модуле, я вызываю RewritePath. Не уверен, что это как-то связано с этим.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2011

Моя проблема заключалась в том, что там перебрался редирект. Таким образом, запрос, в котором я устанавливал значения, и запрос, в котором я считывал значения, были фактически двумя отдельными запросами . Это пошло так быстро, что я не заметил даже при отладке.

0 голосов
/ 24 февраля 2011

Не совсем ясно о потоке вашего кода, но попробуйте использовать HttpContext.Items вместо коллекции HttpContext.Current.Items. Проверьте эту ссылку - http://odetocode.com/articles/111.aspx

...