我有本地Web API项目,它没有通过本地IIS运行。要运行该项目,我在Visual Studio 2013中使用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查看结果时,我得到了这个,我只需在URL中输入http://localhost:52787/api/helloapi
(在浏览器中)并输入:
这是我通过Fiddler手动编写GET时得到的结果:
我选择了自动验证选项。
答案 0 :(得分:9)
当你说"使用Fiddler"时,你的意思是什么 ?
如果您使用Fiddler的编辑器手动撰写请求,请自行添加Authorization
标题,或点击作曲家的选项标签并选中Automatically Authenticate
框。
答案 1 :(得分:1)
我遇到了同样的问题。在我的情况下,它是由web.config中的deny子句引起的,该子句强制所有用户都经过身份验证。这在浏览器中运行良好,因为它处理幕后身份验证并发送适当的授权Cookie。在Fiddler中,这种握手没有发生,因此401.在开发环境中将它添加到你的web.config中它应该可以工作。
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
答案 2 :(得分:0)
我知道这是一篇较旧的文章,但如果有人(例如我)仍在寻找答案,而以上答案仍不能解决问题,请尝试此解决方案-
由于我已经在我的web.config文件中正确设置了false true
元素,因此在由VS 2017和VSTS组成的dev env中,上述答案不起作用。经过几番尝试之后,我发现问题的根源在其他地方。
我需要对“ applicationhost.config”文件进行以下更改,该文件通常可以在路径“ $infolder = Get-ChildItem C:\folder\*.txt -rec
foreach ($file in $infolder)
{
(Get-Content $file.PSPath) |
Foreach-Object { $_[15] -replace '-18','-2018'} |
Set-Content $file}
”下找到-
找到<authorization>
元素,并确保将“ enabled”属性设置为“ true”,如下所示:
C:\Users\xxx\Source\Repos\yyy\yyy\.vs\config
答案 3 :(得分:0)
发生这种情况是因为您在ValuesController上具有Authorize属性 [授权] 公共类ValuesController:ApiController
只需删除ValuesController上的[Authorize]属性