Ошибка аутентификации при отладке VS2013 - iis express
Я пытаюсь подобрать имя пользователя Windows при отладке в Visual Studio 2013. Я просто использую:
httpcontext.current.user.identity.name
Если я запустил это на своем Dev-сервере, он отлично работает, если я запустил его в режиме отладки в любой предыдущей версии Visual Studio, он также отлично работает.
Мои проблемы - если я запускаю это на visual studio 2013, я получаю пустую строку.
Моя веб-конфигурация выглядит следующим образом.
<system.web>
<authentication mode="Windows"/>
<identity impersonate="false"/>
<authorization>
<allow users="*"/>
</authorization>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
<customErrors mode="Off"/>
</system.web>
Ответы
Ответ 1
Как я исследовал это, я нашел свой ответ, но не могу найти ответ в Интернете, поэтому я думал, что id делится этим:
Я исправил свою проблему, изменив файл applicationhost.config. Мой файл был сохранен в папке "\ Мои документы \IISExpress\config".
Кажется, что VS2013 игнорировал мой файл web.config и применял разные методы проверки подлинности.
Мне пришлось изменить эту часть файла, чтобы выглядеть следующим образом. По правде говоря, я только изменил anonymousAuthentication как false, а режим WindowsAuthentication - true.
<authentication>
<anonymousAuthentication enabled="false" userName="" />
<basicAuthentication enabled="false" />
<clientCertificateMappingAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="false">
</iisClientCertificateMappingAuthentication>
<windowsAuthentication enabled="true">
<providers>
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>
Ответ 2
Я только что обновился до VS 2013 с VS 2012 года, и текущая идентификация пользователя (HttpContext.User.Identity) прошла анонимно.
Я попробовал изменить IIS express applicationhost.config, без разницы.
Решение состояло в том, чтобы посмотреть на свойства веб-проекта, нажать F4, чтобы получить свойства проекта, когда у вас выбран верхний уровень выбранного проекта. Не щелкните правой кнопкой мыши по проекту и выберите свойства, это совсем другое.
Заменить анонимную аутентификацию и включить аутентификацию Windows.
Работает как соус:)
Ответ 3
В Visual Studio 2013 И VS15 (но я думаю, что то же самое для всех остальных версий) просто нажмите F4 и измените два свойства:
- Анонимная аутентификация: Отключить
- Аутентификация Windows: Включить
Ответ 4
В VS2013 F4 вашего проекта, чтобы просмотреть окно свойств и отключить анонимный доступ и включить "Аутентификация Windows"
Тогда это сработает. Не нужно ничего менять.
Ответ 5
VS 2015 меняет это. Он добавил папку .vs в мой веб-проект и там был apphost.config. Я внес изменения (window authentication = true, anon = false), и он начал предоставлять имя пользователя вместо пустого.
Ответ 6
Откройте файл applicationHost.config, расположенный в папке C:\Users [userid]\Documents\IISExpress\config. Внутри этого файла измените overrideModeDefault anonymousAthentication и windowsAuthentication на "Разрешить"
<sectionGroup name="security">
<section name="access" overrideModeDefault="Deny" />
<section name="applicationDependencies" overrideModeDefault="Deny" />
<sectionGroup name="authentication">
<section name="anonymousAuthentication" overrideModeDefault="Allow" />
<section name="basicAuthentication" overrideModeDefault="Deny" />
<section name="clientCertificateMappingAuthentication" overrideModeDefault="Deny" />
<section name="digestAuthentication" overrideModeDefault="Deny" />
<section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Deny" />
<section name="windowsAuthentication" overrideModeDefault="Allow" />
</sectionGroup>
Следующее изменение lockItem должно быть "false" для AnonymousAuthenticationModule и WindowsAuthenticationModule
<system.webServer>
<modules>
<!--
<add name="HttpCacheModule" lockItem="true" />
-->
<add name="DynamicCompressionModule" lockItem="true" />
<add name="StaticCompressionModule" lockItem="true" />
<add name="DefaultDocumentModule" lockItem="true" />
<add name="DirectoryListingModule" lockItem="true" />
<add name="IsapiFilterModule" lockItem="true" />
<add name="ProtocolSupportModule" lockItem="true" />
<add name="HttpRedirectionModule" lockItem="true" />
<add name="ServerSideIncludeModule" lockItem="true" />
<add name="StaticFileModule" lockItem="true" />
<add name="AnonymousAuthenticationModule" lockItem="false" />
<add name="CertificateMappingAuthenticationModule" lockItem="true" />
<add name="UrlAuthorizationModule" lockItem="true" />
<add name="BasicAuthenticationModule" lockItem="true" />
<add name="WindowsAuthenticationModule" lockItem="false" />
Выполнение этих изменений позволит существующим настройкам веб-конфигурации переопределить то, что находится в файле applicationHost для IIS Express.
Ответ 7
Вы также можете изменить свойства проекта для своего веб-проекта, выбрать "Веб" с левых вкладок, а затем изменить раскрывающийся список "Серверы" на "Локальный IIS". Создайте новый виртуальный каталог и используйте диспетчер IIS для настройки вашего сайта/пула приложений по желанию.
Я предпочитаю этот метод, так как обычно у вас есть локальный каталог (или сайт) IIS для локального тестирования. Вы также не будете влиять на другие сайты.
![Web Project Properties]()
Ответ 8
Похоже, что правильный ответ предоставляется пользователем3149240 выше. Однако, как указал Нил Уотсон, здесь воспроизводится файл applicationhost.config.
Изменения действительно могут быть сделаны на панели свойств VS или в файле, хотя и в другом месте. В нижней части файла applicationhost.config находится набор элементов местоположения. У каждого приложения для IIS Express есть один из них. Изменение настроек в пользовательском интерфейсе обновляет этот раздел файла. Таким образом, вы можете либо изменить настройки с помощью пользовательского интерфейса, либо изменить этот файл.
Вот пример анонимного auth off и Windows auth on:
<location path="MyApp">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</location>
В пользовательском интерфейсе VS это эквивалентно:
Anonymous Authentication: Disabled
Windows Authentication: Enabled