ASP.NET授权(NTLM / BASIC)因PUT而失败,但适用于GET

时间:2017-11-29 12:34:33

标签: c# asp.net-mvc authorization basic-authentication ntlm-authentication

我试图通过授权(NTLM / BASIC)发出GET / Post请求。代码适用于所有GET请求,但对于任何POST请求都会获得401未授权。

我的代码:

NetworkCredential credential = new NetworkCredential(user, password);
var myCache = new CredentialCache
{
    { uri, auth, credential } // auth = "BASIC" or "NTLM"
};

var handler = new HttpClientHandler
{
    AllowAutoRedirect = true,
    PreAuthenticate = true,
    Credentials = myCache
};
HttpClient httpClient = new HttpClient(handler);
...
StringContent content = new StringContent(bodyText);
httpClient.PostAsync(uri, content).Result; // returns 401

1 个答案:

答案 0 :(得分:0)

PUT请求上运行的代码是什么?很可能您正在使用的用户名/密码组合实际上没有对资源的WRITE访问权限,因此您收到了未经授权的错误。

如果您有权访问接收PUT调用的代码,请检查它要写入的文件/文件夹。如果没有,请联系拥有该服务的人,并询问他们失败的原因。