Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
Authentication Fiddler HTTP/1.1 401未经授权_Authentication_Asp.net Web Api_Authorization_Fiddler - Fatal编程技术网

Authentication Fiddler HTTP/1.1 401未经授权

Authentication Fiddler HTTP/1.1 401未经授权,authentication,asp.net-web-api,authorization,fiddler,Authentication,Asp.net Web Api,Authorization,Fiddler,我有一个本地Web API项目,它不是通过本地IIS运行的。要运行该项目,我在VisualStudio2013中使用F5 使用Fiddler,我不断得到: HTTP/1.1 401 Unauthorized # Result Protocol Host URL Body Caching Content-Type Process Comments Custom 88 401 HTTP localhost:52787 /api/values 6,180

我有一个本地Web API项目,它不是通过本地IIS运行的。要运行该项目,我在VisualStudio2013中使用F5

使用Fiddler,我不断得到:

HTTP/1.1 401 Unauthorized

#   Result  Protocol    Host    URL Body    Caching Content-Type    Process Comments    Custom  88  401 HTTP    localhost:52787 /api/values 6,180   private text/html; charset=utf-8    fiddler:10724           
我知道我应该得到200,但我不是。我应该在哪里检查我做错了什么

这是一个来自浏览器的屏幕截图。当我回到Fiddler查看结果时,我得到了这个结果,我只是键入
http://localhost:52787/api/helloapi
输入URL(在浏览器中),然后按enter键:

下面是当我通过Fiddler手动编写get时得到的结果:

我选中了自动验证选项。

当你说“使用小提琴手”时,你的确切意思是什么


如果您使用Fiddler的Composer手动编写请求,请自己添加
授权
标题,或者单击Composer的选项选项卡并选中
自动验证
框。

我也遇到了同样的问题。在我的例子中,它是由web.config中的一个deny子句引起的,该子句强制所有用户进行身份验证。这在浏览器中运行良好,因为它在幕后处理身份验证并发送适当的授权Cookie。在Fiddler中,这种握手不会发生,因此是401。在开发环境中,将其添加到web.config中,它应该可以工作

<system.web>
       <authorization> 
           <allow users="?" /> 
      </authorization>  
</system.web>

我知道这是一篇较老的帖子,但如果有人(像我一样)仍在寻找答案,而上述答案没有解决问题,请尝试此解决方案-

上述答案在我的dev env中不起作用,它由VS 2017和VSTS组成,因为我已经在web.config文件中正确设置了
元素。经过几次尝试之后,我发现问题的根源在其他地方

我需要对“applicationhost.config”文件进行以下更改,该文件通常位于路径“
C:\Users\xxx\Source\Repos\yyy\yyy\.vs\config
”下-

找到
元素并确保“enabled”属性设置为“true”,如下所示:

       <system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="true" />
                    <windowsAuthentication enabled="true" />
                </authentication>
            </security>
        </system.webServer>

发生这种情况是因为您的ValuesController上有一个Authorize属性 [授权] 公共类值控制器:ApiController


只需删除ValuesController上的[Authorize]属性

您的API需要身份验证,或者该操作的编码使其返回404的httpwebresponse。你没有提供足够的信息来回答问题。是的,我在api控制器前面有这个,并且我在其中添加了Users=my name[Authorize(Users=“…my user name…”),它仍然不起作用。我不知道的是。。。它在哪里寻找这些用户?我在哪里可以查到。我没有在任何地方配置其他身份验证。这些应该是本地计算机用户。它是在浏览器中工作而不是在fiddler中工作吗?是的,它在浏览器中工作,但我希望它在fiddler中工作。好的,web.api项目是默认的,我没有修改其中的任何内容,我把它放在api控制器User.Identity.IsAuthenticated.ToString()中,它返回false。所以我把asp.net项目包装起来,做了和它给我的一样的事情?????再次从浏览器中执行此操作,但也要运行fiddler并检查流量。也许你需要在你的请求中设置一个授权头。更新了我原来的问题。是的,我用的是菲德勒的作曲家。我选中了自动验证选项,但仍然得到相同的结果。使用Fiddler的“复制头”功能复制401响应上的HTTP响应头以更新您的问题。更清楚的是,当您单击Execute时,您只看到一个HTTP/401,而不是两个?