1

C# で記述された Excel アドインがあり、サーバーに接続して httpwebrequest 経由でデータを取得します

1 つのクライアントでプロキシ設定の [自動構成スクリプトを使用する] がチェックされており、そこでいくつかのスクリプトを使用しています。

この場合、私のアドインはサーバーに接続できません。

そこで、フィドラーを開いて、失敗する理由を確認します。その後、アドインが機能し始めます。

フィドラーを開いた状態でプロキシ設定を確認したところ、「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 に答える