我有一個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個月以前的版本中的一些更加容易。 –