![](/img/trans.png)
[英]StatusCode: 401, ReasonPhrase: 'Unauthorized' gets displayed when calling a Post Method through HTTPClient using C#
[英]C# PostAsync - {StatusCode: 401, ReasonPhrase: 'Unauthorized' with ASP.NET MVC 4
我正在使用ASP.NET MVC4并使用PostAsync调用控制器中的一个方法,从一个MVC4项目到另一个MVC4项目。 我没有在被调用的控制器或方法中使用任何身份验证属性。
引用此链接: link修复了我在本地运行应用程序并将PostAsync调用到服务器上的应用程序时的问题。 现在,当我将应用程序部署到服务器并尝试调用其他应用程序时,我收到了未经授权的错误。 我究竟做错了什么?
在IIS中运行的两个应用程序都使用相同的站点和相同的应用程序池。
使用远程调试,这是服务器响应:
{StatusCode: 401, ReasonPhrase: 'Unauthorized', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Cache-Control: private
Server: Microsoft-IIS/7.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
Date: Fri, 23 Jun 2017 13:44:19 GMT
Content-Length: 6644
Content-Type: text/html; charset=utf-8
}}
这是我的代码:
using (var handler = new HttpClientHandler { UseDefaultCredentials = true })
using (HttpClient client = new HttpClient(handler) { BaseAddress = new Uri(Properties.Settings.Default.EnvironmentRootPath)})
{
List<string> orderNumbers = NumList;
var pairs = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("orderNumbers", string.Join(",", orderNumbers))
};
var content = new FormUrlEncodedContent(pairs);
// call sync
var response = client.PostAsync("CentralBroadcast/broadcastNewOrder", content).Result;
if (response.IsSuccessStatusCode)
{
//
}
else
{
//
}
}
问题似乎是由于从承载IIS 5.1或更高版本的同一服务器访问本地Web应用程序并使用完全限定的域名。
FQDN的域名需要在注册表中列出白名单,我可以通过完成以下步骤来完成此操作:
在进行任何调整之前,最好先创建一个注册表备份
1)单击“ 开始” ,单击“运行” ,键入regedit,然后单击“ 确定” 。
2)在注册表编辑器中,找到并单击以下注册表项: HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ Control \\ Lsa \\ MSV1_0
3)右键单击“ MSV1_0” ,指向“ 新建” ,然后单击“ 多字符串值” 。
4)键入BackConnectionHostNames,然后按Enter。
5)右键单击“ BackConnectionHostNames” ,然后单击“修改”。
6)在“ 数值数据”框中,键入本地计算机上站点的主机名或主机名,然后单击“ 确定” 。
7)退出注册表编辑器,然后重新启动IISAdmin服务。
有关更多详细信息,请参阅: https : //support.microsoft.com/en-us/help/896861/you-receive-error-401.1-when-you-browse-a-web-site-that-uses-integrate
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.