이상한 동작을 발견했으며 누군가 내 코드가 이와 같이 작동하는 이유에 대한 설명이 있는지 궁금합니다.HttpClient를 사용하여 localhost에서 나머지 api를 호출하여 401 인증을받지 못함, IIS 8.5
내 시나리오는 다음과 같습니다. 두 개의 나머지 API가 C#으로 생성되어 CoreApi 및 FrontApi를 호출 할 수 있습니다. 두 api는 동일한 서버에 별도의 사이트와 appPools를 가지고 있으며 두 appPools 모두 NetworkService로 실행됩니다. FrontApi는 HttpClient를 사용하여 CoreApi를 호출합니다. 나는 CoreApi를 호출하는 FrontApi의 ValuesController를 호출하여 호출을 트리거합니다. CoreApi는 Windows 인증을 사용하고 FrontApi는 익명 인증을 사용합니다.
내 개발 컴퓨터에서 FrontApi를 호스트하면 정상적으로 작동하지만 FrontApi가 CoreApi를 호출하면 전체 URL을 사용하여 동일한 서버에서 cohosting하면 401.0 권한이 없습니다. FrontApi에서 "http://localhost/api/values"을 사용하면 올바르게 작동합니다.
의견이 있으십니까?
HttpClientHandler authHandler = new HttpClientHandler()
{
Credentials = CredentialCache.DefaultNetworkCredentials
};
using (HttpClient confClient = new HttpClient(authHandler))
{
HttpResponseMessage message = await confClient.GetAsync("http://mysite.acme.com/api/values");
if (message.IsSuccessStatusCode)
{
result = await message.Content.ReadAsStringAsync();
}
else
result = message.StatusCode.ToString();
}
는 dev에 환경 또는 IIS 서버에서 작업 localhost입니다? – lloyd
iis 서버. 이상하게 행동하는 유일한 시나리오는 동일한 컴퓨터에서 두 서비스를 호스팅하고 URL에서 전체 도메인 이름을 사용하는 것입니다. – Snorre