У меня странная проблема при попытке использовать RunImpersonated для вызова HttpClient API из контроллера ASP.NET 2.2.
Следующий код сделает удаленный запрос в порядке (что приведет к неавторизованному), если я удалю блок RunImpersonated вокруг него.
Но ... при запуске с помощью RunImpersonated запрос не будет выполнен. Он завершается с ошибкой FileLoadException, ищущей «System.Net.Http, версия = 4.2.1.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a»
WindowsIdentity.RunImpersonated(aWindowsUser.AccessToken, () =>
{
var client = new System.Net.Http.HttpClient();
string resourceUrl = "http://myurl";
var wreq = new HttpRequestMessage(HttpMethod.Post, resourceUrl);
wreq.Headers.Add("Accept","application/json;odata=verbose");
HttpContent body = new StringContent("");
body.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = client.PostAsync(new Uri(resourceUrl), body).Result;
var content = response.Content.ReadAsStringAsync().Result;
...
});
Это AspNet Core 2.2, работающий на DotNet Core 2.2. Я также попытался запустить на полной .NET Framework и получить аналогичную ошибку «DLL не найдена» при запуске олицетворения.
Кто-нибудь сталкивался с этим?