Сохранять ссылку на HttpContext в другом потоке после завершения запроса - PullRequest
1 голос
/ 24 марта 2012

Я пытался определить, насколько безопасно сохранять доступную только для чтения ссылку на HttpContext после завершения запроса. В частности, я хочу получить ссылку на HttpContext.Current при выполнении запроса, а затем поместить ссылку на контекст в очередь в памяти для последующей оценки (возможно, до нескольких секунд спустя) в другом потоке. .

Очевидно, что я пытаюсь работать и пытаюсь писать в контекст. Ответ не сработает, и меня это не особо интересует. Вместо этого мне интересно прочитать несколько значений в свойстве context.Request и несколько других значений из самого контекста, например, context.Timestamp, context.Items и, возможно, несколько других.

Предварительные тесты показывают, что я могу сделать это, но я пытаюсь программировать не по стечению обстоятельств, а по намерению. Кто-нибудь может указать на какую-либо документацию (или, возможно, на пост в блоге или что-то от Jon Skeet), в котором указано, что ссылки могут быть сохранены после завершения HTTP-запроса?

1 Ответ

2 голосов
/ 24 марта 2012

Нет, это небезопасно, но это мало связано с потоками.

Это Http Контекст . Текущий. Это context как в "контексте текущего запроса".

Не используйте это после того, как запрос закончится!

Различные IDisposable ресурсы в контексте будут удалены, поэтому не используйте их. Любое число других вещей, которые были действительны во время запроса, не будут действительными, потому что запрос over .

Как только вы решите, какие части вам нужны, скопируйте эти части и сохраните их.

...