我有一个基于此示例的简单 Web api 项目:http: //aspnet.codeplex.com/sourcecontrol/latest#Samples/WebApi/RelaySample/Program.cs
但是,在上面的示例中,中继正在使用本地服务器,在我的项目中,中继正在使用具有真实地址的外部 Web 服务器;公司X.com
我正在通过浏览器使用中继服务(或 Web 代理服务),例如在浏览器请求 relayService.com/companyX 中。中继服务使用来自外部 companyX.com 站点的数据进行响应。
中继效果很好,但是有些标头不正确,我需要查看 HttpClient 发送到远程 companyX.com 服务器的内容。
在 fiddler 或 Charles 中,只列出了从我的浏览器到 relayService.com 的请求/响应,从 HttpClient 到 relayService.com 的请求/响应永远不会出现。
relayService.com 在我的机器上本地运行,在 IIS7 中,我使用主机文件将流量定向到 relayService.com。
在创建 HttpClient 时,我尝试了以下几种变体:
var clientHandler = new HttpClientHandler
{
CookieContainer = cookies,
UseCookies = true,
UseDefaultCredentials = false,
Proxy = new WebProxy("http://localhost:8888"),
UseProxy = true,
AutomaticDecompression = DecompressionMethods.GZip,
AllowAutoRedirect = false,
ClientCertificateOptions = ClientCertificateOption.Automatic
};
HttpClient client = new HttpClient(clientHandler);
更新
如果我更改UseProxy = false
了 Fiddler 打开或关闭时服务继续工作。
然后服务将UseProxy = true
失败,如果 fiddler 打开,我收到以下错误:
Object reference not set to an instance of an object.
at System.DomainNameHelper.IdnEquivalent(String hostname) at System.Net.HttpWebRequest.GetSafeHostAndPort(Uri sourceUri, Boolean addDefaultPort, Boolean forcePunycode) at System.Net.HttpWebRequest.GenerateProxyRequestLine(Int32 headersSize) at System.Net.HttpWebRequest.SerializeHeaders() at System.Net.HttpWebRequest.EndSubmitRequest() at System.Net.Connection.CompleteConnection(Boolean async, HttpWebRequest request)
随着UseProxy = true
fiddler 已关闭,我收到以下(明显)错误:
No connection could be made because the target machine actively refused it 127.0.0.1:8888
在同一个解决方案中,我使用 HttpWebRequest 从网络下载数据,并且确实出现在 Fiddler 中,所以这似乎是 HttpClient.GetAsync() 的问题
我已经在两台机器上尝试过,结果相同。
我整天都在为此苦苦挣扎,任何帮助将不胜感激。
回顾一下:* relayService.com 在我的机器上本地运行,在 IIS7 中
主机文件有“127.0.0.1 relayService.com”
relayService.com 是一个 MVC Web API 站点,它使用 HttpClient.GetAsync() 从实时 Web 下载内容
Fiddler/Charles 在同一台机器上本地运行
到本地 relayService.com 的浏览器流量出现在 Fiddler/Charles
HttpClient.GetAsync() 到实时网络流量不会出现在 Fiddler/Charles 中
Fiddler/Charles 都是最新版本。
再次感谢