我有一个MVC应用程序和一个关联的Web API项目,它们都承载在IIS上的远程服务器上。他们共享相同的应用程序池。每当我尝试从MVC应用程序调用Web API时,我都会收到一个403错误,它似乎来自HttpClientHandler传递的错误凭据。我有使用集成Windows身份验证从MVC应用程序调用Web API
UseDefaultCredentials = true
,我已经尝试设置
Credentials = CredentialCache.DefaultNetworkCredentials
但是这些都使API请求要经过。
设置应用程序池使用我的AD用户名/密码允许所有API请求通过,并且直接从Postman调用API可以正确返回数据。
我的假设是IIS AppPool [Pool Name]在请求中获得转发,并且永远不会传递正确的凭据。反正有没有使API不安全(即只有几个域组应该可以访问它)?
一个电话,我对API从MVC应用
public async Task<HttpResponseMessage> CreateIncident(Incident model)
{
using (var client = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true }))
{
var newIncident = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
var response = await client.PostAsync(hostUri, newIncident);
return response;
}
}
您是否正在通过代理? – joshmcode
不,这是全部托管在内部服务器上,并且所有呼叫都将通过该服务器完全进行。没有代理。就像我说的那样,邮递员和我的电脑直接调用了API,但似乎.NET Core不能模拟这些请求,并且我希望最近有人能够提供更新的更新解决方案比在.NET Core中已经有点过时的6个月以前的版本中的一些更加容易。 –