NTLM身份验证适用于一台计算机,但不适用于另一台计

时间:2014-07-21 16:08:37

标签: c# httpwebrequest ntlm

这给了我heavesches,我有这个代码在两台机器上完美运行:

 CredentialCache cc = new CredentialCache();
 cc.Add(
    uri,
    "NTLM",
    new NetworkCredential(@"MyDomain\MyUsername", "MyPassword"));
 request.Credentials = cc;

在第三个问题上,NTLM因http代码401失败,我确信我可以访问,因为它可以在同一台机器上使用不同的浏览器*(Firefox,IE)。

什么可能导致问题?

*我使用fiddler确保浏览器使用NTLM并且确实如此。

2 个答案:

答案 0 :(得分:0)

在链接中:http://msdn.microsoft.com/en-us/library/59x2s2s6(v=vs.110).aspx 他们在“备注”下写下以下内容:

'authType支持的值是“NTLM”,“Digest”,“Kerberos”和“Negotiate”。 使用此方法添加的凭据仅适用于SMTP。此方法不适用于HTTP或FTP协议。'

我想您可能正在使用与SMTP不同的协议来制作凭据。错误代码401主要通过HTTP生成。

或者您很简单,不要引用适当的SMTP地址。如何解决这个问题..我不知道,我只能尝试找出问题所在。也许你引用了一个不存在的地址。

在这里,也许这会有所帮助:HttpWebRequest 401 with NTLM Authenticiation

答案 1 :(得分:0)

更换

 new NetworkCredential(@"MyDomain\MyUsername", "MyPassword"));

通过

 new NetworkCredential("MyUsername", "MyPassword", "MyDomain"));

解决了第三台机器上的问题......根据机器的不同,代码的行为会有所不同...