我有一个使用c#WinForm开发的简单应用程序,它使用HTTPClient与开发期间在Windows 10上的IIS 10中托管的Web API进行交易。开发计算机上的测试正常。现在,我已将Web API应用程序移动到运行Win2012R2的生产服务器计算机。我还在此生产IIS上配置了Web API以仅使用基本身份验证。我看到列出的其他IIS身份验证方案,包括Digest,Forms,Windows,APS.Net Impersonation和Anonymous,并禁用了所有这些。但是,当我运行winform客户端应用程序时,我收到401(未授权)响应。我已经检查了我知道要做的所有设置和配置,但仍然收到此响应代码。我把Fiddler放在中间,发现响应身份验证与请求中包含的身份验证不同。示例如下:
请求标题:
POST http://rand22/PrevalonESB/api/Login HTTP/1.1
Authorization: Basic UFJFVkFMRU5U:cHJldmFsZW50Mg==
Content-Type: application/json; charset=utf-8
Host: rand22
Content-Length: 105
Expect: 100-continue
响应标题:
HTTP/1.1 401 Unauthorized
Server: Microsoft-IIS/8.5
WWW-Authenticate: Digest qop="auth",algorithm=MD5-sess,nonce="+Upgraded+v138ac47246a9c7aabad1bf83ec86a95adeeacf04e0386d20192a696ef815b0d8b0e2486e724a2f04263a31a6878bc69aa78e0e6a56f57be8b",charset=utf-8,realm="Digest"
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
Date: Mon, 13 Feb 2017 14:13:11 GMT
Content-Length: 0
如果有人在这里帮助我诊断发生了什么,我会很感激。我也很想知道为什么响应头包含我为目标web api应用程序禁用的身份验证方案。 仅供参考:服务器机器以前是域控制器,但已降级为成员服务器