HttpSelfHostServer и HttpContext.Current

Я работаю над собственным хостингом ASP.NET для веб-приложений. Все работает нормально, но теперь я борюсь с HttpContext:

Мне нужно сохранить сессионную информацию от клиента. Но HttpContext.Current всегда равно нулю. Поэтому очевидно, что мой HttpSelfHostServer не работает со статическим HttpContext-Class.

Я не понимаю, почему...? И я не могу найти способ сказать ни HtttpSelfHostServer, ни HttpSelfHostConfiguration работать с HttpContext.

Вот что я делаю:

  • Создание HttpSelfHostConfiguration

    • 1.1 Добавление Service-Resolvers и Routes
    • 1.2 Добавление пользовательских UserNamePassword-Validator
  • создать новый экземпляр HttpSelfHostServer с конфигурацией

    • 2.1 server.OpenAsync().Wait()

Любая помощь, как я могу сказать, что мой сервер работает с HttpContext.Current, очень ценится! Ура!

2 ответа

Вы не сможете использовать HttpContext в собственной среде. HttpContext устанавливается конвейером ASP.Net, который у вас не будет, если вы не работаете под IIS/ASP.Net.

HttpContext доступен только в режиме веб-хостинга, в котором HttpControllerHandler создает запрос.

FYI- Я приглашаю вас прочитать следующие замечательные статьи от Педро Феликса, чтобы лучше понять разные модели хостинга:


Чтобы обойти эту проблему (я нахожу, что в наши дни я использую много компонентов, которые должны одинаково хорошо работать в Web API и MVC), вы можете попробовать эту старую прокладку, которую я написал, чтобы вернуть интерфейс HttpContext который работает в обоих вариантах. Это также на NuGet, здесь источник: Ссылка на github (или Ссылка на Nuget)

licensed under cc by-sa 3.0 with attribution.