Web config 在VS2013-iis express中调试时出现身份验证问题
在Visual Studio 2013中调试时,我正在尝试获取windows用户名。我只是使用:Web config 在VS2013-iis express中调试时出现身份验证问题,web-config,windows-authentication,iis-express,visual-studio-2013,Web Config,Windows Authentication,Iis Express,Visual Studio 2013,在Visual Studio 2013中调试时,我正在尝试获取windows用户名。我只是使用: httpcontext.current.user.identity.name 如果我在我的Dev服务器上运行它,它就可以正常工作;如果我在任何早期版本的visualstudio上以调试模式运行它,它也可以正常工作 我的问题是-如果我在visual studio 2013上运行此操作,我会得到一个空字符串 我的web配置如下 当我研究这个问题时,我找到了我的答案,但在互联网上找不到答案,所以我想与大
httpcontext.current.user.identity.name
如果我在我的Dev服务器上运行它,它就可以正常工作;如果我在任何早期版本的visualstudio上以调试模式运行它,它也可以正常工作
我的问题是-如果我在visual studio 2013上运行此操作,我会得到一个空字符串
我的web配置如下
当我研究这个问题时,我找到了我的答案,但在互联网上找不到答案,所以我想与大家分享一下: 我通过修改applicationhost.config文件修复了问题。我的文件保存在“\My Documents\IISExpress\config”文件夹中 VS2013似乎忽略了我的web.config文件,并应用了不同的身份验证方法 我不得不修改文件的这一部分,使其看起来像下面这样。事实上,我只将匿名身份验证修改为false,将windowsAuthentication模式修改为true
打开位于C:\Users[userid]\Documents\IISExpress\config文件夹中的applicationHost.config文件。在此文件中,将重写的匿名身份验证和Windows身份验证默认值更改为“允许”
下一步将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" />
进行这些更改将允许现有的web配置设置覆盖IIS Express的applicationHost文件中的内容。在项目的VS2013 F4中查看属性窗口,禁用匿名访问并启用“Windows身份验证”
那就行了。无需更改任何其他内容我刚从VS 2012升级到VS 2013,当前用户身份(HttpContext.user.identity)是匿名的 我尝试更改IIS express applicationhost.config,没有区别 解决方案是查看web项目的属性,当您选择项目的顶层时,点击F4以获取项目属性。不要右键单击项目并选择属性,这是完全不同的 将匿名身份验证更改为禁用,将Windows身份验证更改为启用
类似于gravy:)在Visual Studio 2013和VS15中(但我想如果所有其他版本都相同),只需按F4并更改这两个属性: -匿名身份验证:禁用
-Windows身份验证:启用您还可以修改web项目的项目属性,从左侧选项卡中选择“web”,然后将服务器下拉列表更改为“本地IIS”。创建新的虚拟目录,并根据需要使用IIS管理器设置站点/应用程序池 我更喜欢这种方法,因为您通常会有一个本地IISV目录(或站点)进行本地测试。你也不会以这种方式影响任何其他网站
似乎上面的用户3149240提供了正确答案。然而,正如Neil Watson指出的,applicationhost.config文件在这里起作用 这些更改实际上可以在VS属性窗格或文件中进行,尽管位于不同的位置。applicationhost.config文件底部附近是一组位置元素。IIS Express的每个应用程序似乎都有一个这样的应用程序。更改UI中的设置会更新文件的此部分。因此,您可以通过UI更改设置或修改此文件 以下是关闭匿名身份验证和打开Windows身份验证的示例:
<location path="MyApp">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</location>
VS 2015改变了这一点。它在我的web项目中添加了一个.vs文件夹,其中包含applicationhost.config。我做了建议的更改(window authentication=true,anon=false),它开始提供用户名而不是空白。F4并不总是将我带到这个面板。此外,人们常说一幅画抵得上千言万语
我必须这样做,才能在VS2013中使用IIS Express进行可靠的调试。没有这一点,似乎工作正常一次,然后401以后。(1) 是否有AppCmd命令可以更改applicationhost.config文件,以及(2),Web项目上的F4允许我关闭匿名身份验证并打开Windows身份验证。在VS2012中这样做效果很好,但在VS2013中并不能产生一个401免费的开发环境。@Neil,你救了我一天。顺便说一句:没有必要关闭
匿名身份验证
。打开windowsAuthentication
就足够了。这些设置控制允许网站使用的身份验证机制。+1也是。+1…一直在尝试解决这个困扰我的问题,我的本地IISExpress isntanceAh,就是这样做的。天才。谢谢你的提示,真的很有用!我必须删除“协商”才能在没有401的情况下测试webservice调用(使用WSE3)。谢谢。我不敢相信他们会把这当作一种“增强”。这就是web.config的用途。现在我们不能相信我们在web.config中看到的内容。太棒了。你刚刚把我从Visual Studio 2010的回滚中救了出来!真不敢相信这不是所有这些帖子中的一个问题/答案,所以那些帖子一直在谈论IIS设置。我不敢相信他们会把这当作一种“增强”。这就是web.config的用途。现在我们不能相信我们在web.config中看到的内容。太棒了。我相信这是一个比公认的answe更好的方法
<location path="MyApp">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</location>
Anonymous Authentication: Disabled
Windows Authentication: Enabled