2015-10-19 3 views
0

У меня есть веб-страница (home.aspx), для которой требуется проверка подлинности Windows. Если браузер автоматически отправит действительные учетные данные, отобразится home.aspx. В противном случае отображается login.aspx.ASP.NET. Пользовательская страница на 401

В IE я установил флажок «Приглашение для имени пользователя и пароля» в «Свойства обозревателя»> «Локальная интрасеть»> «Пользовательский уровень»> «Аутентификация пользователя». У меня есть следующие шаги в http://www.codeproject.com/Articles/11202/Redirecting-to-custom-page-when-quot-Access-de, и он отлично работает на моем локальном сервере разработки. Однако на производственном сервере это совсем другая история.

В IIS, Home.aspx отключена анонимная аутентификация и включена проверка подлинности Windows. В Login.aspx включена анонимная аутентификация и отключена проверка подлинности Windows.

На сервере разработки на компьютере, который зарегистрирован с использованием правильных учетных данных, появляется home.aspx. И, когда браузер не отправляет учетные данные, Application_EndRequest попадает в код состояния 401, тогда по умолчанию запрашивается проверка подлинности Windows enter image description here. После отмены этого диалога отображается login.aspx. Это правильное поведение.

Однако на рабочем сервере на компьютере, который зарегистрирован с использованием правильных учетных данных, появляется home.aspx. И, когда браузер не отправляет учетные данные, Application_EndRequest попадает в код состояния 401, тогда появляется запрос Windows Authentication Prompt по умолчанию. После отмены этого диалога отображается страница по умолчанию 401. enter image description here

Кто-нибудь делает то, что происходит на производственном сервере, и почему я не могу перехватить код статуса 401 и перенаправить на пользовательскую веб-страницу.

+0

У меня нет образца кода передо мной в качестве примера, но похоже, что вам нужно разрешить анонимный доступ к login.aspx из вашего web.config или параметров безопасности. В противном случае IIS не будет обслуживать его без действительных учетных данных. – GalacticCowboy

+0

Спасибо за ответ. Я включил анонимный доступ к login.aspx и отключил проверку подлинности Windows и по-прежнему получал ту же проблему. – user2769810

ответ

0

В IIS 7 они добавили атрибут в web.config, который контролирует поведение пользовательских ошибок. По умолчанию пользовательские и подробные ошибки отображаются только в локальном браузере. Чтобы показать свои пользовательские ошибки, вам необходимо изменить это в элементе web.config <httpErrors>, атрибуте errorMode.

<configuration> 
    <system.webServer> 
     <httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="File" > 
     <remove statusCode="500" /> 
     <error statusCode="500" 
      prefixLanguageFilePath="C:\Contoso\Content\errors" 
      path="500.htm" /> 
     </httpErrors> 
    </system.webServer> 
</configuration> 

DetailedLocalOnly по умолчанию; другие возможные значения: Detailed и Custom.

Для получения дополнительной информации, приведено описание Microsoft article.

Помимо: Статья, с которой вы связаны, составляет более 10 лет, и поэтому вполне подозревается в «современном» развитии. Один из комментариев к этой статье, опубликованный около 5 лет спустя, указывает на эту же проблему и решение.

+0

Я установил errorMode в Детальный, и теперь он не перенаправляется на login.aspx. Однако он показывает пустую страницу для home.aspx. Когда я просматривал источник в IE, это было все содержимое: . Это так же, как и код javascript. – user2769810

Смежные вопросы