1

我有一个用 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,也许就是这样问题?

4

1 回答 1

1

如果为您的插件使用 app.config 是一个选项(我知道这对于 Office 插件很棘手),您可以在那里处理所有代理配置:

<configuration>
    <system.net>
        <defaultProxy>
            <proxy
                usesystemdefault="true"
                bypassonlocal="true"
            />
        </defaultProxy>
    </system.net>
</configuration>

有关详细信息,请参阅MSDN 上的<defaultProxy> 元素(网络设置)

于 2012-05-17T19:17:10.093 回答