尝试使用RunImpersonated从ASP.NET 2.2控制器内部对API进行HttpClient调用时遇到一个奇怪的问题。
如果删除了周围的RunImpersonated块,下面的代码将使远程请求很好(这将导致未授权)。
但是...使用RunImpersonated运行时,不会发出请求。它失败并出现FileLoadException,查找“ System.Net.Http,Version = 4.2.1.0,Culture = neutral,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;
...
});
这是在DotNet Core 2.2上运行的AspNet Core 2.2。我还尝试在完整的.NET Framework上运行,并且在模拟运行时出现类似的“找不到DLL”错误。
有人碰到这个吗?