HttpContext.Current.Session является нулевым при маршрутизации запросов

Просто поместить его в конфигурационный файл где-то так, как это обычно делается. Просто убедитесь, что вы:

  1. запретили доступ к базе данных с любых серверов за пределами вашей сети,
  2. старайтесь не показывать пароль пользователям (в сообщении об ошибке или через Файлы PHP случайно выполняются как HTML и т. Д.).
45
задан Loki 20 October 2008 в 11:03
поделиться

8 ответов

Получил его. Довольно глупый, на самом деле. Это работало после того, как я удалил & добавленный SessionStateModule как так:

<configuration>
  ...
  <system.webServer>
    ...
    <modules>
      <remove name="Session" />
      <add name="Session" type="System.Web.SessionState.SessionStateModule"/>
      ...
    </modules>
  </system.webServer>
</configuration>

Просто добавление это не будет работать, так как "Сессия" должна была быть уже определена в machine.config.

Теперь, интересно - ли это обычная вещь сделать. Это, конечно, не кажется таким, так как это кажется настолько сырым...

52
ответ дан Loki 20 October 2008 в 11:03
поделиться

Просто добавьте атрибут runAllManagedModulesForAllRequests="true" к system.webServer\modules в web.config.

Этот атрибут включен по умолчанию в MVC и Динамических проектах Данных.

24
ответ дан Tim Schmelter 20 October 2008 в 11:03
поделиться

Кажется, что Вы забыли добавлять свой адрес сервера состояния в конфигурация файл.

 <sessionstate mode="StateServer" timeout="20" server="127.0.0.1" port="42424" />
0
ответ дан Bogdan Maxim 20 October 2008 в 11:03
поделиться

Что сказал @Bogdan Maxim. Или изменитесь для использования InProc, если Вы не используете внешний сервер состояния сессии.

<sessionState mode="InProc" timeout="20" cookieless="AutoDetect" />

Взгляд здесь для большего количества информации о директиве SessionState.

2
ответ дан tvanfosson 20 October 2008 в 11:03
поделиться

Я думаю, что эта часть кода вносит изменения в контекст.

 Page page = BuildManager.CreateInstanceFromVirtualPath(
                        m_VirtualPath, 
                        typeof(Page)) as Page;// IHttpHandler;

Также эта часть кода бесполезна:

 if (page != null)
 {
     return page;
 }
 return page;

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

0
ответ дан mohammedn 20 October 2008 в 11:03
поделиться

Раздел конфигурации кажется звуковым, поскольку он работает если, когда к страницам обычно получают доступ. Я попробовал другие предложенные конфигурации, но проблема все еще там.

я сомневаюсь, что проблема находится в поставщике Сессии, так как она работает без маршрутизации.

0
ответ дан Loki 20 October 2008 в 11:03
поделиться

Хорошее задание! У меня была та же самая проблема. Добавление и удаление модуля Сессии работали отлично на меня также. Это однако не возвращало HttpContext. Текущий. Пользователь, таким образом, я попробовал Ваш небольшой прием модулем FormsAuth и конечно же, который сделал это.

<remove name="FormsAuthentication" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule"/>
3
ответ дан Mike 20 October 2008 в 22:03
поделиться

лучшим решением является

runAllManagedModulesForAllRequest - умная вещь для удаления и повторной установки модуля сеанса.

alk.

0
ответ дан 26 November 2019 в 20:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: