使用WebAPI的c# Windows通用应用程序给出了未经授权的响应

本文关键字:授权 响应 应用程序 WebAPI Windows 使用 | 更新日期: 2023-09-27 18:14:10

我正在尝试使用Visual Studio 15在windows 10上使用windows通用应用程序中的Web API…

我使用以下代码从WebAPI获取员工列表。

HttpClient client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true });
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.BaseAddress = new Uri("http://localhost:59591/");
HttpResponseMessage response = client.GetAsync("api/Employee/GetAllEmployee").Result;
if (response.IsSuccessStatusCode)
{
    var employeelist = response.Content.ReadAsStringAsync();
}

但是作为回应,我得到

状态码:401,ReasonPhrase: 'Unauthorized'.

如果我创建一个Windows窗体应用程序,相同的代码可以正常工作。

有什么具体的我需要做的,以便在Windows通用应用程序中使用Web API ?

使用WebAPI的c# Windows通用应用程序给出了未经授权的响应

无法从UWP应用程序访问本地主机。安全模型不允许这样做。

您可以在这里获得有关隔离如何工作的详细信息:

网络隔离和环回

IP环回地址和传统的环回接口都有的不同应用程序之间的通信网络,以及用于进程间通信的几个本地计算机上的应用程序。

不能使用IP环回地址进行网络通信进程间通信(两个不同的应用程序之间),因为这受网络隔离的限制。使用IP的网络通信允许在同一进程内的应用程序中使用环回地址沟通目的。

有关启用开发人员访问IP环回的更多信息用于调试目的的应用程序之间的地址,参见如何启用环回和调试网络隔离。

出于调试目的,您可以关闭它。你可以在这里找到一些文档

开发人员也可以使用checknetisoll .exe工具手动执行为应用程序添加环回豁免。

要使应用不受环回限制,则应用ID为必须提供包装。下面的示例命令免除一个应用程序从环回限制。

checknetisol .exe LoopbackExempt -a- p = s - 1 - 15 - 2 - 4125766819 - 3228448775 - 2449327860 - 2490758337 - 1264241865 - 3581724871 - 2122349299