【发布时间】:2018-12-13 20:38:38
【问题描述】:
我在将应用程序从 .NET Core 1.0.1 升级到 .NET Core 2.1 时遇到了问题。这是一个通过 Windows 任务计划程序运行的控制台应用程序,它调用一组托管在同一服务器上的 IIS 中的 Web 服务。升级后,当尝试在主机上运行它时,它在第一次 API 调用时失败,返回 401。IIS 设置为接受匿名身份验证和 Windows 身份验证,以及协商和 NTLM 提供程序。任务计划程序设置控制台应用程序应使用的用户。进行第一次 API 调用的代码如下所示:
using (var handler = new HttpClientHandler())
{
handler.UseDefaultCredentials = true;
var client = new HttpClient(handler);
client.DefaultRequestHeaders.Accept.Clear();
var result = await client.GetStringAsync(myUrlString);
return Newtonsoft.Json.JsonConvert.DeserializeObject<List<MyResponseObject>>(result);
}
我还将 API 项目升级到 .NET Core 2.1,但我尝试在将控制台应用程序作为 2.1 运行时恢复到 1.0.1 版本(相反,在 2.1 运行 API 并在 1.0 运行控制台应用程序.1 也有效)以确保它是有问题的控制台应用程序。
当使用 IIS Express 本地托管的 API 从我的本地主机运行时,控制台应用程序运行良好。
任何帮助将不胜感激!
【问题讨论】:
-
IIS 日志文件中记录的子状态是什么? support.microsoft.com/en-ca/help/943891/…
-
我认为在同一个 IIS 站点中同时进行匿名和 Windows 身份验证是无效的。
-
子状态码为 1 - 登录失败。
-
@mason 我们在 IIS 中托管的所有站点目前都已启用(包括托管 .NET Core v1.0.1 版本 API 的站点,控制台应用程序在试图击中它)。无论如何,只是尝试禁用匿名并重新运行控制台应用程序,但仍然没有骰子。
-
您是否确保用户拥有正确的权限来使用您的应用程序?任务调度器中是否勾选了“以最高权限运行”?
标签: asp.net iis asp.net-core .net-core asp.net-core-2.1