做内部网站,并部署了一个ASP.NET Core Web API到IIS10。
当启用匿名身份验证并且禁用其他所有功能时,将到达API调用。这是IIS >身份验证中的默认设置。
但是,如果启用了Windows身份验证,并且禁用了其他所有功能:
的数据
我得到错误:
第一个月
不知道在哪里寻找问题,或者为什么甚至有一个问题。下面是网站的web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\webapi.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess">
</aspNetCore>
</system.webServer>
</location>
</configuration>
字符串
最新
这是我希望调用的Web API端点:
[HttpPost("SaveProduct")]
public async Task<Product> SaveProduct([FromBody] Product myProduct)
{
// some code....
return myProduct;
}
型
这是我的Blazor应用程序中的调用代码:
public async Task SaveProductAync(Product myProduct)
{
try
{
......
HttpResponseMessage resp = await new HttpClient().PostAsJsonAsync<Product>("Product/SaveProduct", myProduct, new JsonSerializerOptions(JsonSerializerDefaults.Web));
savedProduct = await resp.Content.ReadFromJsonAsync<Product>();
......
}
}
型
我有一个日志记录类,并添加了一行日志resp.StatusCode,在阅读内容之前。代码为 * 未授权 *。所以这似乎是问题所在,但在错误中这对我来说并不明显。
当我创建web API项目时,我在创建项目时选择了 No authentication。我想通过IIS完全控制身份验证。
我想这是不可能的吧?我是否也必须在web API项目中添加身份验证代码?
1条答案
按热度按时间lb3vh1jj1#
这个问题的根本原因是我们没有在Web应用程序中启用Windows身份验证,这可能会导致一些错误页面,如401。
我们可以通过使用fiddler或wireshark捕获http请求并检查响应的内容来验证它。
谢谢你的努力。
像下面这样更改代码,因为返回的数据是XML而不是JSON。您可以添加
httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
。字符串