我.NET的核心1.1開發Web應用程序,既有一個Web API和MVC應用程序。當我試圖在IIS上託管應用程序時調用Web API時,我遇到了一個問題。.NET的核心 - 從MVC應用程序中調用的Web API使用Windows身份驗證在IIS上的結果HttpRequestException 401(未授權)狀態代碼
我在同一個IIS網站上都有MVC和API應用程序,並且都啓用了Windows身份驗證(使用NTLM /協商提供程序)。
我已經在web.config forwardWindowsAuthToken =真。
我可以直接打電話從郵差/ Web瀏覽器的API URL和接收JSON結果
所有API調用都在HttpClient的正在作出的HttpClientHandler的構造有UseDefaultCredentials =真
如果我在我的桌面上運行MVC應用程序(通過具有調試功能的Visual Studio進行IE瀏覽器)並將它指向IIS網站上的Web API,我會得到正確的JSON結果並且不會出現401錯誤。
更改的MVC應用程序託管網址爲localhost,而不是完全合格的URL,對這個問題沒有影響
我認爲這是與ASP.NET核心不轉發正確來自我的MVC應用程序的Web API證書。我花了幾個小時試圖找到處於完全相同情況的人,但大多數解決方案和問題與此相比稍有不同,爲這些解決方案構成的解決方案對我沒有任何幫助。
任何人都可以擺脫在這個問題上的一些光或指出我在做什麼不正確?這裏是一個API呼叫的例子,我會爲基礎索引頁面做...
public async Task<IncidentWrapper> GetIndex(int limit, int offset)
{
using (var client = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true }))
{
var response = await client.GetStringAsync("https://<some.server.name>/<appname>/api/v1/Incidents?limit=10&offset=0");
return JsonConvert.DeserializeObject<IncidentWrapper>(response);
}
}