1

通信に xml rpc を使用する C シャープ Wpf ClickOnce アプリケーションを作成しました。私のユーザーの多くは、さまざまな方法でプロキシ設定を取得しています。pac ファイルを使用するものもあれば、IE や dhcp などから使用するものもあります。あらゆる種類の環境でプロキシの詳細を取得するこのプロセス全体を自動化したいと考えています。私は多くの異なるコード スニペットを試しましたが、このようなものが既に存在するかどうかを知りたいです。

Xml Rpc のドキュメントに setProxy メソッドがあることがわかりましたが、ユーザー名またはパスワードが使用されている場合、その指定方法がわかりません。このプロセス全体は、まだ少し混乱しています。

また、WebProxy クラスを含むさまざまなコードを試し、DefaultCredentials、DefaultProxy、GetSystemWebProxy などを使用しました。

現時点では、winhttp を使用して dllimport を実行し、プロキシ設定を取得します。Clickonce 展開でこれを実行できるかどうかはわかりません。dllimport は p/invoke と同じですか?

ご覧のとおり、あらゆる種類のプロキシ設定を取得する方法についてアドバイスをいただければ幸いです。

フィードバックをお待ちしております。

4

2 に答える 2

0

ClickOnce のインストール/更新では、プロキシ認証は実際にはサポートされていません。IE の情報を使用し、場合によっては machine.config ファイルを使用します。これに関するすべての既知の情報を含む決定的なスレッドはこちらです。

アプリケーションのインストールの観点から、プロキシ認証に問題はありませんでした。バックエンド WCF サービスを呼び出すアプリケーションを使用する場合、ユーザーにプロキシ認証情報を提供させ、サービス呼び出しを行うときにプログラムで設定を適用しました。これは ClickOnce とは関係ありません。

于 2013-09-08T17:46:44.820 に答える
0

これは私のために働いた:

public static IExample ProxyAndCredentials { get; set; }
public static string ProxyUrl { get; set; }

public static void SetupProxyAndCredentials() {

  //Insert your website here where XmlRpc calls should go
  var url = new Uri("http://www.example.com/");   

  try
  {
    ProxyUrl = WebRequest.DefaultWebProxy.GetProxy(url).ToString();
    Log.Debug(url + "    is using proxy      " + ProxyUrl);

    if (ProxyUrl == url.ToString() || ProxyUrl == url + "/"){

    // A proxy is not in use here
    ProxyUrl = "";
    Log.Debug("No proxy is used for " + url);

    }
    else if (!String.IsNullOrEmpty(ProxyUrl)){

    // A proxy is in use
    ProxyAndCredentials.Proxy = new WebProxy(ProxyUrl);
    Log.Debug("A proxy is used for " + url);

    }

    //Set credentials, in my experience it is better to always set these
    ProxyAndCredentials.Credentials = CredentialCache.DefaultNetworkCredentials;
    ProxyAndCredentials.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
  }
  catch (Exception p)
  {
    //Handle Exception
  }
}
于 2013-12-30T16:03:00.423 に答える