在VS2013中debugging时的validation问题 – iis express
我试图在Visual Studio 2013中进行debugging时selectWindows用户名。我只是简单地使用:
httpcontext.current.user.identity.name
如果我运行在我的开发服务器上,它工作正常,如果我在debugging模式下运行任何以前的版本的Visual Studio它也可以正常工作。
我的问题是 – 如果我在Visual Studio 2013上运行这个我得到一个空string。
我的网页configuration如下。
<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,当前的用户身份(HttpContext.User.Identity)以匿名forms出现。
我试过更改IIS express applicationhost.config,没有区别。
解决scheme是查看Web项目的属性,当您select最高级别的项目时,按F4以获取项目属性。 不要右击项目并select属性,这是完全不同的东西。
将匿名身份validation更改为禁用,并启用Windows身份validation。
作品像肉汁:)
当我在研究这个时,我find了我的答案,但无法在互联网上find答案,所以我想编号分享这个:
我通过修改我的applicationhost.config文件解决了我的问题。 我的文件被保存在“\ My Documents \ IISExpress \ config”文件夹中。
看来,VS2013忽略我的web.config文件,并应用不同的身份validation方法。
我不得不修改这部分文件,看起来像下面。 实际上,我只修改了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>
在VS2013 F4上查看你的项目属性窗口并禁用匿名访问并启用“Windows身份validation”
然后它会工作。 不需要改变别的东西
在Visual Studio 2013和VS15(但我猜如果相同的所有其他版本)只需按F4并更改这两个属性: – 匿名身份validation: 禁用 – Windows身份validation: 启用
VS 2015改变了这一点。 它添加了一个.vs文件夹到我的web项目和applicationhost.config在那里。 我做了build议的变化(窗口身份validation=真,anon = false),它开始提供一个用户名,而不是一个空白。
打开位于C:\ Users [userid] \ Documents \ IISExpress \ config文件夹中的applicationHost.config文件。 在这个文件中,将anonymousAthentication和windowsAuthentication的overrideModeDefault更改为“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的“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" />
进行这些更改将允许现有的Webconfiguration设置覆盖IIS Express的applicationHost文件中的内容。
您还可以修改Web项目的项目属性,从左侧的选项卡中select“Web”,然后将服务器下拉列表更改为“本地IIS”。 创build一个新的虚拟目录,并根据需要使用IISpipe理器来设置您的网站/应用程序池。
我更喜欢这种方法,因为您通常会有一个本地IIS v目录(或站点)在本地进行testing。 您不会以这种方式影响任何其他网站。
看来正确的答案是由user3149240提供的。 但是,正如Neil Watson所指出的,applicationhost.config文件在这里起作用。
实际上可以在VS Property窗格或文件中进行更改,尽pipe在不同的地方。 在applicationhost.config文件的底部附近是一组位置元素。 IIS Express的每个应用程序似乎都有其中之一。 更改UI中的设置更新文件的这一部分。 所以,你可以通过UI更改设置或者修改这个文件。
这是一个匿名validation和Windowsvalidation的例子:
<location path="MyApp"> <system.webServer> <security> <authentication> <windowsAuthentication enabled="true" /> <anonymousAuthentication enabled="false" /> </authentication> </security> </system.webServer> </location>
这在VS UI中相当于:
Anonymous Authentication: Disabled Windows Authentication: Enabled
- 在IIS Express中使用自定义域
- 在IIS Express的web.config中添加MIME映射
- 创buildSDDL失败,错误:1332
- IISExpress与0xc0000008错误崩溃
- configurationIIS Express以便对VS2010项目进行外部访问
- 尝试连接到运行IISExpress的本地主机时如何解决ERR_CONNECTION_REFUSED – 错误502(无法从Visual Studio中debugging)?
- 将IIS Express绑定到IP地址
- URL中的点导致404与ASP.NET mvc和IIS
- debuggingASP.NET MVC时,IIS Express会出现“访问被拒绝”错误