c# - 调用 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;
}
解决方案
DefaultNetworkCredentials 是运行应用程序的当前安全上下文的身份验证凭据。对于客户端应用程序,这些通常是运行应用程序的用户的 Windows 凭据。
如果用户对您正在使用的 HttpClient 的 URL 没有权限,则会出现错误。为了让它工作你
- 要么必须冒充有权访问该应用程序的用户,要么
- 使用系统定义的帐户(如网络服务凭据)运行您的 EXE,并确保可以使用相同的帐户访问 HTTP 应用程序。
推荐阅读
- javascript - createList 在 Mirage js 中不拾取关系
- airflow - Airflow find DAG Runs with specific conf
- asp.net - C# 应用程序在 VM 上运行良好,但在 docker 上运行良好
- scala - 在 spark 中查找每组最常见的非空前缀
- scsi - LTO 磁带上的预警在哪里?
- asp.net-core-webapi - 带有 Web Api 的 OrchardCore 多租户
- scala - 如何使用过滤器从scala中的数据框中获取包含空值的行集
- here-api - 此处 API 中的世代号
- javascript - JavaScriptClass:简单的条件(三元)运算符返回错误的结果
- xeus-cling - 如何用archiconda3安装xeus-cling?