我在向网络服务器验证HttpWebRequest时遇到了困难。我收到的响应只是401.我已确保在C#端正确设置凭据,并且IIS已正确设置为允许NTLM身份验证。我不知道这是否重要,但他的计算机与Web服务器不在同一个域中。
我确定用户/通行证是正确的,但是在用户上配置是否还需要其他授权设置?
如果启用基本身份验证并禁用Windows身份验证,请求将完美运行(当然,正确的C#代码更改)。
我错过了什么?
webRequest.UseDefaultCredentials = false;
webRequest.PreAuthenticate = true;
var c = new NetworkCredential("User", "password", "domain");
CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new Uri(Url), "NTLM", c);
webRequest.Credentials = credentialCache;
下载IIS中我的设置的快照。
请求跟踪失败:
答案 0 :(得分:1)
在同事的帮助下,我们能够确定Windows处理身份验证的方式有问题。看起来本地安全中的设置是错误的。更改本地政策>安全选项>网络访问:本地帐户的共享和安全模型仅限来宾 - 本地用户通过身份验证访问来解决问题。
答案 1 :(得分:0)
凭证缓存行的价值是什么
CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new Uri(Url), "NTLM", c);
为什么不简单地设置
webRequest.Credentials = c;
401.2可能意味着您要连接的Web服务器无法使用NTLM(它似乎是根据您的屏幕截图),或者您的客户端和Web服务器之间存在代理