Authentication IIS中托管的Web Api-401未经授权的错误

Authentication IIS中托管的Web Api-401未经授权的错误,authentication,windows-authentication,asp.net-web-api,Authentication,Windows Authentication,Asp.net Web Api,我为intranet环境编写了WebAPI。与其他应用程序一样,为Windows身份验证配置了Web Api。但返回的错误是: HTTP/1.1 401 Unauthorized Cache-Control: private Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/8.0 WWW-Authenticate: NTLM WWW-Authenticate: Negotiate X-Powered-By: ASP.NET

我为intranet环境编写了WebAPI。与其他应用程序一样,为Windows身份验证配置了Web Api。但返回的错误是:

HTTP/1.1 401 Unauthorized
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.0
WWW-Authenticate: NTLM
WWW-Authenticate: Negotiate
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Date: Thu, 13 Mar 2014 22:05:12 GMT
Content-Length: 6171
Proxy-Support: Session-Based-Authentication

我怎样才能解决这个问题?

这是fiddler捕捉到的:

中未选择任何身份验证协议(包括匿名) IIS。仅启用集成身份验证和客户端浏览器 使用了不支持集成身份验证的。集成 身份验证已启用,请求已通过代理发送 在身份验证标头到达Web之前更改了这些标头 服务器。Web服务器未配置为匿名访问和 未收到所需的授权标头。已收到 “配置/系统.Web服务器/授权”配置部分 可能会明确拒绝用户访问


我怀疑使用该服务的应用程序可能托管在同一台服务器上,并通过完全限定的域名进行引用。在这种情况下,问题可能是由环回检查引起的。为了进行测试,请尝试在不使用完全限定域名的情况下引用该服务,并查看其是否有效。如果是,请使用以下步骤指定本地计算机上的主机名

方法1:指定主机名(如果需要NTLM身份验证,首选方法)()

要指定映射到环回地址并可连接到计算机上网站的主机名,请执行以下步骤:

  • 将DisableStrictNameChecking注册表项设置为1。有关如何执行此操作的详细信息,请单击以下文章编号以查看Microsoft知识库中的文章:281308在基于Windows 2000的计算机或基于Windows Server 2003的计算机上连接到SMB共享可能无法使用别名
  • 单击开始,单击运行,键入regedit,然后单击确定
  • 在注册表编辑器中,找到并单击以下注册表项: HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1\U 0
  • 右键单击MSV1_0,指向“新建”,然后单击“多字符串值”
  • 键入BackConnectionHostNames,然后按ENTER键
  • 右键单击BackConnectionHostNames,然后单击修改
  • 在“值数据”框中,键入主机名或本地计算机上站点的主机名,然后单击“确定”
  • 退出注册表编辑器,然后重新启动IISAdmin服务

  • 类似的问题-

    您的控制器是否支持授权?不,它不支持授权属性。请尝试在IIS中检查站点上的身份验证设置。我不知道您的具体想法?我只为IIS上的web api应用程序启用了Windows身份验证。如何在web api控制器中捕获域用户名?您使用什么客户端来测试这个?小提琴手?