我为内部网环境编写了Web Api。与其他应用程序一样,Web Api配置为Windows身份验证。但返回的错误是:
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
我该如何解决这个问题?
答案 0 :(得分:0)
这就是小提琴手:
未选择身份验证协议(包括匿名) IIS.Only集成身份验证已启用,并且是客户端浏览器 用于不支持集成身份验证。集成 身份验证已启用,请求已通过代理发送 它在到达Web之前更改了身份验证标头 server.Web服务器未配置匿名访问和a 未收到所需的授权标题 "配置/ system.webServer /授权"配置部分 可能明确拒绝用户访问。
答案 1 :(得分:0)
我怀疑使用该服务的应用程序可以托管在同一台服务器上,并通过完全限定的域名进行引用。在这种情况下,问题可能是由环回检查引起的。要进行测试,请尝试引用该服务,而不使用完全限定的域名,看看它是否有效。如果是,请使用以下步骤指定本地计算机上的主机名。
方法1:指定主机名(如果需要NTLM身份验证,则为首选方法)(http://support.microsoft.com/kb/896861)
要指定映射到环回地址并可以连接到计算机上的网站的主机名,请按照下列步骤操作:
http://blogs.4ward.it/impersonation-issues-401-error-mvc-and-web-api-4-5/
类似的问题 - 401 Unauthorized error web api mvc windows authentication