.NET Core - 在 IIS 上使用 Windows 身份验证从 MVC 应用程序调用 Web API 导致 HttpRequestException 401(未经授权)状态代码

.NET Core - Calling Web API from MVC Application with Windows Authentication on IIS Results In HttpRequestException 401 (Unauthorized) Status Code

我正在 .NET Core 1.1 上开发 Web 应用程序,同时包含 Web API 和 MVC 应用程序。当我尝试从托管在 IIS 上的应用程序中调用 Web API 时,我遇到了一个问题。

我认为这与 ASP.NET Core 没有将正确的凭据从我的 MVC 应用程序转发到 Web API 有关。我花了几个小时试图找到处于完全相同情况下的人,但大多数解决方案和问题的变化与此略有不同,为这些提出的解决方案对我没有任何帮助。

任何人都可以阐明这个问题或指出我做错了什么吗?下面是一个 API 调用的示例,我将为基本索引页面调用...

    public async Task<IncidentWrapper> GetIndex(int limit, int offset)
    {
        using (var client = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true }))
        {
            var response = await client.GetStringAsync("https://<some.server.name>/<appname>/api/v1/Incidents?limit=10&offset=0");
            return JsonConvert.DeserializeObject<IncidentWrapper>(response);
        }
    }

我花了太长时间才弄明白这一点。如果您遇到必须在内部网上调用 Web API 形成 MVC 应用程序并且它们在同一站点上的情况(例如 http://my.websi.te/application and http://my.websi.te/application/api) and you encounter 401 errors, it's because Microsoft has built in callback loop detection on the same server. I fixed my issue by following the first method on the Microsoft Knowledge base located here