[web-config] VS2013에서 디버깅 할 때의 인증 문제-IIS Express

Visual Studio 2013에서 디버깅 할 때 Windows 사용자 이름을 선택하려고합니다. 간단히 다음을 사용합니다.

httpcontext.current.user.identity.name

Dev Server에서 실행하면 정상적으로 작동하고 이전 버전의 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>



답변

방금 VS 2012에서 VS 2013으로 업그레이드했고 현재 사용자 ID (HttpContext.User.Identity)가 익명으로 전달되었습니다.

IIS 익스프레스 applicationhost.config를 변경해 보았습니다.

해결책은 웹 프로젝트의 속성을보고 프로젝트의 최상위 수준을 선택했을 때 F4 키를 눌러 프로젝트 속성을 가져 오는 것입니다. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하지 마십시오. 이것은 완전히 다른 것입니다.

익명 인증을 사용 안함으로 변경하고 Windows 인증을 사용으로 변경하십시오.

그레이비처럼 작동합니다 🙂


답변

이것을 조사하면서 내 대답을 찾았지만 인터넷에서 대답을 찾을 수 없으므로 이것을 공유 할 것이라고 생각했습니다.

내 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>


답변

비주얼 스튜디오 2013 VS15 (하지만 난 다른 모든 버전에 대해 동일한 경우 추측) 단지 언론 F4와는이 두 가지 속성을 변경 : – 익명 인증 : 사용 안 함
Windows 인증 : 사용


답변

프로젝트의 VS2013 F4에서 속성 창을보고 익명 액세스를 비활성화하고 “Windows 인증”을 활성화합니다.

그러면 작동합니다. 다른 것을 변경할 필요가 없습니다.


답변

VS 2015는 이것을 변경합니다. 내 웹 프로젝트에 .vs 폴더를 추가했고 applicationhost.config가 거기에있었습니다. 제안 된 변경 사항 (window authentication = true, anon = false)을 적용하고 공백 대신 사용자 이름을 제공하기 시작했습니다.


답변

C : \ Users [userid] \ Documents \ IISExpress \ config 폴더에있는 applicationHost.config 파일을 엽니 다. 이 파일 내에서 anonymousAthentication의 overrideModeDefault 및 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>

다음으로 AnonymousAuthenticationModule 및 WindowsAuthenticationModule에 대해 lockItem을 “false”로 변경합니다.

  <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" />

이렇게 변경하면 기존 웹 구성 설정이 IIS Express의 applicationHost 파일에있는 내용을 재정의 할 수 있습니다.


답변

웹 프로젝트의 프로젝트 속성을 수정하고 왼쪽 탭에서 “웹”을 선택한 다음 서버 드롭 다운을 “로컬 IIS”로 변경할 수도 있습니다. 새 가상 디렉터리를 만들고 IIS 관리자를 사용하여 원하는대로 사이트 / 앱 풀을 설정합니다.

일반적으로 로컬에서 테스트 할 로컬 IIS v- 디렉터리 (또는 사이트)가 있으므로이 방법을 선호합니다. 이런 식으로 다른 사이트에도 영향을주지 않습니다.

웹 프로젝트 속성