【问题标题】:NTLM Authentication works on one machine but not from anotherNTLM 身份验证适用于一台机器,但不适用于另一台机器
【发布时间】:2014-07-21 16:08:37
【问题描述】:

这让我很头疼,我的代码可以在两台机器上完美运行:

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

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

什么可能导致问题?

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

【问题讨论】:

  • 您的第三台机器是否使用代理?

标签: c# httpwebrequest ntlm


【解决方案1】:

在链接中: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

【讨论】:

    【解决方案2】:

    更换

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

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

    修复了第三台机器上的问题...奇怪的是代码的行为因机器而异...

    【讨论】:

      猜你喜欢
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 2017-10-29
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多