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

问题描述

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

在此处输入图像描述

我的代码:

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;
}

标签: c#asp.net

解决方案


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

如果用户对您正在使用的 HttpClient 的 URL 没有权限,则会出现错误。为了让它工作你

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

推荐阅读