Проблема аутентификации при отладке в 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>

8 ответов

Решение

Когда я изучал это, я нашел свой ответ, но не могу найти ответ в Интернете, поэтому я решил поделиться этим:

Я исправил проблему, изменив файл applicationhost.config. Мой файл был сохранен в папке "\My Documents\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>

Я только что обновился до VS 2013 с VS 2012, и текущая идентификация пользователя (HttpContext.User.Identity) стала анонимной.

Я попытался изменить IIS express applicationhost.config, без разницы.

Решением было посмотреть свойства веб-проекта, нажать F4, чтобы получить свойства проекта, когда у вас выбран верхний уровень проекта. Не кликайте правой кнопкой мыши по проекту и не выбирайте свойства, это нечто совершенно другое.

Измените "Анонимная проверка подлинности" на "Отключено" и "Проверка подлинности Windows" на "Включено"

Работает как соус

В Visual Studio 2013 и VS15 (но я думаю, что то же самое для всех других версий) просто нажмите F4 и измените эти два свойства: -Анонимная аутентификация: отключить-Аутентификация Windows: включить

В VS2013 F4 на вашем проекте откройте окно свойств и отключите анонимный доступ и включите "Аутентификацию Windows"

Тогда это будет работать. Не нужно ничего менять

VS 2015 меняет это. Он добавил папку.vs в мой веб-проект, и там было приложение applicationhost.config. Я сделал предложенные изменения (аутентификация окна = true, anon=false), и он начал предоставлять имя пользователя вместо пробела.

Откройте файл applicationHost.config, расположенный в папке C:\Users[userid]\Documents\IISExpress\config. Внутри этого файла измените overrideModeDefault для anonymousAthentication и windowsAuthentication на "Allow"

 <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 на "ложь" для 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.

Вы также можете изменить свойства проекта для своего веб-проекта, выбрать "Интернет" на левой вкладке, а затем изменить раскрывающийся список "Серверы" на "Локальный IIS". Создайте новый виртуальный каталог и используйте диспетчер IIS для настройки пула вашего сайта / приложения.

Я предпочитаю этот метод, так как у вас обычно есть локальный v-каталог IIS (или сайт) для локального тестирования. Вы также не будете влиять на другие сайты.

Свойства веб-проекта

F4 не всегда приводит меня к этой панели. Кроме того, часто говорят, что картинка стоит тысячи слов.

https://st ackru.com/images/817cf2804f42b339605e430c51adcaeb1b0ef769.png

Похоже, что правильный ответ предоставлен пользователем 3149240 выше. Однако, как отметил Нил Уотсон, файл applicationhost.config находится здесь.

Изменения могут быть сделаны на панели свойств VS или в файле, хотя и в другом месте. В нижней части файла applicationhost.config находится набор элементов местоположения. Кажется, что у каждого приложения для IIS Express есть одно из них. Изменение настроек в пользовательском интерфейсе обновляет этот раздел файла. Таким образом, вы можете изменить настройки через пользовательский интерфейс или изменить этот файл.

Вот пример с отключенной анонимной авторизацией и включенной аутентификацией Windows:

<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
Другие вопросы по тегам