.NET Core 2.0中RestSharp无法使用Fiddler代理问题求助
解决RestSharp在.NET Core 2.0中代理配置不生效的问题
我之前也碰到过类似的坑,RestSharp在.NET Core环境下的代理配置逻辑和.NET Framework确实有差异,尤其是你用的106.2.2版本,咱们一步步来搞定:
一、先修正核心错误点
你代码里写的some_non_existing_server是无效的代理地址——Fiddler的本地代理地址应该是localhost,默认端口是8888。另外,RestSharp不会自动识别你创建的WebProxy实例,必须显式把它赋值给RestClient的Proxy属性才行。
二、显式配置Fiddler代理的正确代码
直接替换你的代码片段,这样就能让请求走Fiddler抓包了:
static void Main(string[] args) { // 配置Fiddler本地代理 var proxy = new WebProxy("localhost", 8888) { BypassProxyOnLocal = false // 不跳过本地请求,确保Fiddler能捕获所有请求 }; var restSharpClient = new RestClient("http://www.google.ch") { // 关键步骤:把代理实例绑定到RestClient Proxy = proxy, // 调试时临时忽略证书错误(Fiddler的HTTPS证书在.NET Core中会被默认拦截) RemoteCertificateValidationCallback = (sender, cert, chain, sslPolicyErrors) => true }; // 发起请求的示例代码 var request = new RestRequest(Method.GET); var response = restSharpClient.Execute(request); // 后续业务逻辑... }
三、如果想用系统代理(Fiddler自动设置的全局代理)
要是不想硬编码代理地址,想直接用Fiddler设置的系统代理,这么写就可以:
static void Main(string[] args) { var restSharpClient = new RestClient("http://www.google.ch") { // 启用系统默认代理 Proxy = WebRequest.DefaultWebProxy, // 给代理设置默认凭据,避免权限拦截 Proxy.Credentials = CredentialCache.DefaultCredentials }; // 发起请求... }
四、额外调试小贴士
- 确保Fiddler处于打开状态,在
Tools > Options > Connections里确认端口是8888,没有被其他程序占用。 - 如果调试HTTPS请求,记得安装Fiddler的根证书(Fiddler会主动提示,或者在
Tools > Options > HTTPS里点击Actions > Trust Root Certificate)。 - 测试时可以先用
http://httpbin.org/get这类地址,响应里会直接显示代理信息,能快速确认配置是否生效。
内容的提问来源于stack exchange,提问作者MichelZ
相关产品推荐
相关产品推荐

