【发布时间】:2013-05-07 18:15:22
【问题描述】:
我正在解决我通过 .NET 的 HttpClient 调用的服务的错误,尝试通过本地代理 (Fiddler) 路由请求,但我的代理设置似乎没有生效。
我是这样创建客户端的:
private HttpClient CreateHttpClient(CommandContext ctx, string sid) {
var cookies = new CookieContainer();
var handler = new HttpClientHandler {
CookieContainer = cookies,
UseCookies = true,
UseDefaultCredentials = false,
Proxy = new WebProxy("http://localhost:8888", false, new string[]{}),
UseProxy = true,
};
// snip out some irrelevant setting of authentication cookies
var client = new HttpClient(handler) {
BaseAddress = _prefServerBaseUrl,
};
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
return client;
}
然后我通过以下方式发送请求:
var response = CreateHttpClient(ctx, sid).PostAsJsonAsync("api/prefs/", smp).Result;
请求直接发送到服务器而不尝试访问代理。我错过了什么?
【问题讨论】:
-
您的服务是否在您的本地机器上进行测试?考虑绕过本地地址的代理。
-
顺便说一句,创建
HttpClient实例的成本很高。您应该尽可能重用实例。有几篇博文讨论了使用 Google 实现的可达性。
标签: .net asp.net-web-api .net-4.5