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- 디렉터리 (또는 사이트)가 있으므로이 방법을 선호합니다. 이런 식으로 다른 사이트에도 영향을주지 않습니다.