ошибка 500 ошибка конфигурации в разделе проверки подлинности web.config после развертывания asp.net ядро для IIS

#asp.net-core #iis #web-config #windows-authentication

Вопрос:

Каркас asp.net ядро 2.2 — После разработки и удалось получить пользователя Windows, вошедшего в систему на локальном хосте (IIS express):

 [Route("getUser")]
[HttpGet]
public IActionResult GetUser()
{
    var NullUser = User.Identity.Name; //return null

    var currentUser = System.Security.Principal.WindowsIdentity.GetCurrent();
    return Ok(currentUser.Name);
}
 

и запуски. json:

 "iisSettings":{
    "windowsAuthentication": false,
    "anonymousAuthentication": true
    ...
}
 

Пока все идет так хорошо !
Теперь — я публикую приложение в IIS с помощью web.config:

 <system.web>
    <authentication mode="Windows"></authentication>
    <identity impersonate="false" /> //This is because I'm getting the username by code
</system.web>
<system.webServer>
    <aspnetCore processPath=....... forwardWindowsAuthToken="true" hsotingModel="InProcess">
    </aspnetCore>
    <security>
        <authentication>
            <anonymousAuthentication enabled ="false" />
            <windowsAuthentication enabled ="true" />
        </authentication>
    </security>
</system.webServer> 
 

Это основные свойства пула приложений, с которыми работает приложение:
Версия .NET CLR: Нет управляемого кода
Режим управляемого пиллинирования: Интегрирован

Дополнительно: Модель процесса: Удостоверение: Пулидентичность приложения

И затем, при запуске приложения, я получаю ошибку 500.19, указывающую на раздел аутентификации (игнорируйте ошибки опечатки — это написание свободного текста — не копировать вставить):

 AnonymousAuthenticationModule

Config error
This configuration section cannot be used at this path. This happens when the section is 
locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set 
explicitly by a location tag with overrideMode="Deny"; ot the legacy allowOverride="false"/

Config Source:
<authentication>
   <anonymousAuthentication enabled ="true" />
   <windowsAuthentication enabled ="true" />
 

Комментарии:

1. Удалите все <system.web> . Они предназначены для ASP.NET, не ASP.NET Ядро. Используйте диспетчер IIS, чтобы отключить анонимную проверку подлинности и включить проверку подлинности Windows для вашего сайта/приложения, не добавляя <authentication> в свой web.config . Диспетчер IIS знает правильное место для размещения настроек.

2. @Лекс Ли — Отлично , я попробую. Почему я не вижу «проверку подлинности Windows» при проверке подлинности в IIS ?

3. Вероятно, вы не включили проверку подлинности Windows во время установки IIS. Вы можете включить его прямо сейчас.

4. Управлял — Установил его

5. Включение проверки подлинности Windows в IIS: Перейдите в Панель управления -> Программы и компоненты ->> Включите или выключите функции Windows->>> Разверните Информационные службы Интернета ->>>> Службы Всемирной паутины ->>>>> В разделе Безопасность установите флажок Проверка подлинности Windows ->>>>>> Нажмите ОК, чтобы завершить настройку.

Ответ №1:

web.config.png

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

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/windowsauthentication/

Комментарии:

1. Пожалуйста, укажите дополнительную информацию в своем ответе. Как это написано в настоящее время, трудно понять ваше решение.

Ответ №2:

Как упоминал @Lex Li — проблема заключалась в элементах конфигурации, которые не имеют отношения к ASP.NET ядро, но для ASP.NET 4.5 — Я удалил их, как он советовал