我正在构建供公司内部使用的 Blazor 服务器应用程序并使用 Windows 身份验证。该应用程序应该通过公开的控制器从另一个应用程序获取更新。我正在尝试测试控制器并获得未经授权的 401,但是我尝试点击它(Postman、浏览器、测试控制台应用程序、从 Blazor 服务器应用程序本身内部等)。我正在运行 .NET 6 并使用 Visual Studio 搭建应用程序,并从 Blazor 服务器应用程序的创建项目向导中选择 Windows 身份验证。我正在使用 IIS Express 选项从 Visual Studio 运行该应用程序。这是我在控制台应用程序中设置的简单测试,只是试图从控制器获得积极的响应:
public async Task<int> GetUpdateTestTimerResult()
{
var client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:40871");
var url = "api/updateTest";
var value = await JsonSerializer.DeserializeAsync<int>
(await client.GetStreamAsync(url), new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
return value;
}
我尝试在控制器上设置AllowAnonymous属性,但没有骰子。如何公开允许外部应用程序(也是公司内部/本地)访问的控制器?
调查问题后,使用
UseDefaultCredentials
将帮助我们解决问题。
HttpClientHandler handler = new HttpClientHandler()
{
UseDefaultCredentials = true
};
var client = new HttpClient(handler);
client.BaseAddress = new Uri("http://localhost:8008/");
var url = "error?handler=api";
var response = await client.GetAsync(url);
return new JsonResult(response);
测试结果