我们在少量工作站(Windows 7)上有一个奇怪的行为。
我们的.NET客户端正在与托管在IIS中的REST Api服务(Web Api 2)通信。
客户端使用System.Net.Http。HttpClient访问Api,并针对.NET Framework 4.5.2。
Api配置为使用Windows集成身份验证(协商,NTLM)。
当客户端使用HTTPGET/DELETE调用Api时,一切都正常工作。
当客户端使用HTTP POST/PUT调用Api时(数据通过请求体发送)。IIS响应401未授权。
这个问题消失了:
-
在客户端工作站上运行Fiddler代理时。
-
IIS身份验证配置为仅使用NTLM
我浏览了许多博客帖子和文章,但没有找到解决方案。
Signer表现出同样的怪异行为。
客户端还使用信号器与服务通信。客户端可以连接到集线器并接收消息。但在尝试调用方法时获取401(信号器调用使用POST完成)。由于客户端在Windows 7上,因此不支持WebSocket。两种传输上的行为相同(服务器发送事件、长轮询)。其行为类似于:
SignalR net45 gives 401 Unauthorized on specific user/machine combinations
.还修复了(使用Microsoft.AspNet.signer.Client.2.2.0\
lib\net40
\Microsoft.AspNet.signer.Client。dll)也适用于信号器。
编辑:
信号器net40不使用System.Net.Http中的HttpClient。因此,错误必须连接到System.Net。Http库。
非常感谢您的建议。