Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web config 在VS2013-iis express中调试时出现身份验证问题_Web Config_Windows Authentication_Iis Express_Visual Studio 2013 - Fatal编程技术网

Web config 在VS2013-iis express中调试时出现身份验证问题

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配置如下 当我研究这个问题时,我找到了我的答案,但在互联网上找不到答案,所以我想与大

在Visual Studio 2013中调试时,我正在尝试获取windows用户名。我只是使用:

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