我有一个用 C# 编写的 Excel 插件,它连接到服务器以通过 httpwebrequest 获取数据
一个客户端检查了代理设置“使用自动配置脚本”,并在那里使用了一些脚本。
在这种情况下,我的插件无法连接到服务器。
所以我打开提琴手来检查它为什么失败。然后我的插件开始工作。
我在 fiddler 打开的情况下检查了代理设置,看,它已更改为“为您的 LAN 使用代理服务器”
我想在我的代码中做同样的事情,使用 IE 设置中的代理设置并在我的代码中使用它。
你知道如何做到这一点吗?
我现在所拥有的如下,并且不起作用。谢谢
private static void SetProxyIfNeeded(HttpWebRequest request, Uri uri)
{
var stopWatch = new Stopwatch();
stopWatch.Start();
if (_proxy == null)
{
_proxyUri = WebRequest.GetSystemWebProxy().GetProxy(uri);
_proxy = new WebProxy(_proxyUri, true)
{
Credentials = CredentialCache.DefaultNetworkCredentials
};
if (_proxyUri != null && !string.IsNullOrEmpty(_proxyUri.AbsoluteUri) && !_proxy.Address.Equals(uri) && !IsLocalHost(_proxy))
{
_realProxy = true;
}
else
{
_realProxy = false;
}
}
//if there is no proxy, proxy will return the same uri
//do we need check if client.Proxy is null or not,
if (_realProxy)
{
request.Proxy = _proxy;
}
stopWatch.Stop();
Helper.LogError("\r\n Got proxy in " + stopWatch.ElapsedMilliseconds + "ms.\r\n");
}
另外,我有一个配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
</configSections>
<appSettings>
<add key="log4net.Config" value="log4netConfig.xml" />
</appSettings>
<system.net>
<defaultProxy enabled ="true" useDefaultCredentials = "true">
<proxy usesystemdefault ="True" bypassonlocal="True"/>
</defaultProxy>
</system.net>
</configuration>
编辑:来自他们的 IT 人员的客户端更新,看起来 pac 已下载但未使用我不知道为什么未使用它,我指定在每个请求中使用它,除了无法指定代理的 Cometd,也许就是这样问题?