C# HttpClient与模拟
从我的web服务(A)usng模拟中,我想使用HttpClient调用WebAPI服务(B)。但是服务B总是获得服务A的系统用户,即使我在那里进行模拟C# HttpClient与模拟,c#,asp.net,httpclient,kerberos,C#,Asp.net,Httpclient,Kerberos,从我的web服务(A)usng模拟中,我想使用HttpClient调用WebAPI服务(B)。但是服务B总是获得服务A的系统用户,即使我在那里进行模拟 var baseUri = "http://service/api/" var handler = new HttpClientHandler { UseDefaultCredentials = true }; var client = new HttpClient(handler) { BaseAddress = baseUri }; clie
var baseUri = "http://service/api/"
var handler = new HttpClientHandler { UseDefaultCredentials = true };
var client = new HttpClient(handler) { BaseAddress = baseUri };
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("ContentType", new List<string> { "application/json"});
var dataDto = new DataDto();
var json = JsonConvert.SerializeObject(dataDto );
var content = new StringContent(json);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = await client.PostAsync(SubUrl, content);
var baseUri=”http://service/api/"
var handler=newhttpclienthandler{usedaultcredentials=true};
var client=newhttpclient(handler){BaseAddress=baseUri};
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
Add(“ContentType”,新列表{“application/json”});
var dataDto=新的dataDto();
var json=JsonConvert.SerializeObject(dataDto);
var content=新的StringContent(json);
content.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/json”);
var response=wait client.PostAsync(子URL,内容);
我知道Kerberos和SPN设置正确,因为它使用WebClient工作
我认为问题在于,HttpClient.PostAsync创建了一个新任务,因此创建了一个在服务a的appPool凭据下运行的新线程
有人知道我如何才能强制任务在不受约束的凭据下运行吗
我没有访问aspnet_config.config的权限,因此提供的解决方案不适用于我
非常感谢!
Tschuegevar credentials=新的网络凭据(用户名、密码);var handler=newhttpclienthandler{Credentials=Credentials};使用(var http=new HttpClient(handler)){/…}?@codebased,这不是模拟。您使用的是windows autho吗?由于找不到任何其他解决方案,我最终不得不这样做