Проблема проверки подлинности при отладке в 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>
692   8  

8 ответов:

Я недавно обновлена до версии 2013 года против 2012 года и текущий идентификатор пользователя (объект HttpContext.Пользователь.Identity) проходил как анонимный.

Я попытался изменить IIS express applicationhost.конфиг, никакой разницы.

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

изменить анонимная проверка подлинности и проверка подлинности Windows включена.

работает как подливка :)

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

я исправил свою проблему, изменив свой applicationhost.конфигурационный файл. Мой файл был сохранен в папке" \My Documents\IISExpress\config".

похоже, что VS2013 игнорировал мою сеть.конфигурационный файл и применение различных методов проверки подлинности.

мне пришлось изменить эту часть файла, чтобы выглядеть следующим образом. По правде говоря, я только изменил 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>

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

в VS2013 F4 в вашем проекте для просмотра окна свойств и отключения анонимного доступа и включения "проверки подлинности Windows"

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

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

откройте applicationHost.файл config, расположенном в C:\Users[имя пользователя]\документы \ папка\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" />

внесение этих изменений позволит существующим настройкам web config переопределить то, что находится в файле applicationHost для IIS Express.

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

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

Web Project Properties

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

изменения действительно могут быть сделаны в панели свойств VS или в файле, хотя и в другом месте. В нижней части applicationhost.конфигурационный файл-это набор элементов расположения. Каждое приложение для 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>

Это эквивалентно В против пользовательского интерфейса:

Anonymous Authentication: Disabled
Windows Authentication: Enabled

Comments

    Ничего не найдено.