调用aspx页的EXE程序获取:401-未经授权:由于凭据无效,访问被拒绝

时间:2018-10-15 07:07:52

标签: c# asp.net

我正在创建一个使用HttpClient来调用URL的可执行程序。我尝试使用DefaultNetworkCredentials,因为我不知道服务器的用户ID和密码。以下代码在我的本地计算机上成功运行,但是在部署到服务器时会出错。

enter image description here

我的代码:

HttpClientHandler authtHandler = new HttpClientHandler()
{
    Credentials = CredentialCache.DefaultNetworkCredentials
};

// Call the URL                    
using (HttpClient httpClient = new HttpClient(authtHandler))
{
    var formContent = new FormUrlEncodedContent(new[]
    {
        new KeyValuePair<string, string>("testingkey", "testingvalue")
    });

    // Make it sync instead of async by using .Result
    var result = httpClient.PostAsync(url, formContent).Result;

    // Get the content, for verification 
    var content = result.Content;
}

1 个答案:

答案 0 :(得分:2)

DefaultNetworkCredentials是运行应用程序的当前安全上下文的身份验证凭据。对于客户端应用程序,这些通常是运行该应用程序的用户的Windows凭据。

如果用户没有使用HttpClient所使用的URL的权限,则将出现错误。要使其正常工作

  1. 要么必须冒充具有访问权限的用户 应用程序或
  2. 使用系统定义的帐户(如网络)运行EXE 服务凭据,并确保可以访问HTTP应用程序 使用相同的。