Проверка подлинности формы работает на сервере разработки, но не на IIS
У нас похожая проблема. У нас есть веб-приложение, работающее под именем appdomain по умолчанию. Это работало нормально до недели назад... Внезапно он столкнулся с проблемой. Ниже сообщение взято из журналов событий.
Event code: 4005 Event message: Forms authentication failed for the request. Reason: The ticket supplied has expired.
Приложение использует FormsAuthentication и получает роли от aspnetdb. После ошибки, когда пользователь входит на страницу, он не перенаправляет на default.aspx. Снова login.aspx подходит. С другой стороны, приложение отлично работает на сервере разработки (localhost), но не на www(IIS 6.0).
У кого-нибудь есть идея?
Спасибо,
Ilknur
1 ответ
Похоже, что когда пул приложений, в котором запущено ваше приложение, находится в режиме интегрированного управляемого конвейера, который по умолчанию используется в IIS 7, вам нужно будет добавить
<system.webServer>
<modules>
<add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />
Для конфигурации.
См. Раздел [Выполнение проверки подлинности на основе форм и URL-аутентификации для статических файлов с IIS 7] этой статьи.
Первоначально я вручную добавил вышеупомянутый раздел в web.config, но IIS пожаловался на ошибку во время выполнения, поэтому в итоге я использовал панель MMC для IIS (inetmgr), чтобы добавить ее через графический интерфейс. Файл конфигурации приложения не был изменен, но функция начала работать, поэтому я не уверен, к какому инструменту графического интерфейса файла конфигурации применено изменение.