10

vs2010を使用しています。シンプルなコンソール アプリでhttp://***/service1.asmx、古い asmx サービスへのサービス参照を追加しようとしました。私のコンピューターはプロキシ サーバーの背後にあるため、エラーが発生します。

「リモート サーバーが予期しない応答を返しました: (407) プロキシ認証が必要です。」

wsdl ツールを使用している場合、プロキシ サーバーのポート番号を定義できず、10.0.0.3:80 などのサーバーが応答しなかったというメッセージが表示されますが、8080 ポートを指定する必要があり、方法がわかりません。どうすればリファレンスを作成できますか?

4

4 に答える 4

28

私は問題を見つけるのにほぼ 50 時間を費やしましたが、この単純な解決策を Web のどこにも見つけることができませんでした。

Web.config の「構成」セクションの下に、これを追加します。

  <system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true"></defaultProxy>
</system.net>

その後、魅力のように機能します!

コードビハインドからも実行できます。

serviceConnection = new WebService1();
serviceConnection.Proxy = System.Net.HttpWebRequest.GetSystemWebProxy();
serviceConnection.Proxy.Credentials = CredentialCache.DefaultCredentials; 

美しい作品!!。

HTTPS の場所から消費する必要がある場合は、次の構成を追加します。

<message clientCredentialType="Certificate" algorithmSuite="Default" />
于 2012-11-06T16:55:37.620 に答える
8

Web参照を追加するときにプロキシアドレスとサーバーポートを指定するには、以下のリンクを参照してください。

http://msdn.microsoft.com/en-us/library/bb628649.aspx

http://msdn.microsoft.com/en-us/library/03seed2h.aspx

asmxへの参照を追加するには

  1. コンソールアプリを右クリックして、[サービス参照の追加]を選択します。

  2. 詳細ボタンをクリックして、アドレスバーにasmxアドレスを入力します。その横にある緑色のボタンをクリックして、asmxを見つけます。

  3. 名前を付けて、[参照の追加]をクリックします。

更新:web config /appconfigを更新して追加してみてください。

<system.net>

<defaultProxy>
<proxy usesystemdefault="True" proxyaddress="http://[your proxy address and port number]"  bypassonlocal="True"/>

</defaultProxy>

</system.net>
于 2011-09-12T10:37:13.790 に答える
3

参照の追加:

このように参照を追加していることを確認してください。Add Service Reference「 」をクリックして「 」に移動しAdvanced、最後に「 」をクリックする必要がありますAdd Web Reference

次に、以下を追加します。

http://***/service1.asmx

あなたが使用するためport 8080に:

http://***:8080/service1.asmx

Web サービスのプロキシをセットアップします。

Web サービスが使用していることを確認するには、クライアント アプリケーションのオブジェクトにInternet Explorer proxy以下を追加します。Web Service

webService1.Proxy = WebRequest.GetSystemWebProxy();

プロキシを手動でセットアップすることもできます。

webService1.Proxy = new WebProxy("hxxp://my-proxy-settings:8080/");

NTLM

NTLM を使用する場合は、クライアント プロジェクトでも既定の資格情報を使用していることを確認する必要があります。UseDefaultCredentialsこれは、 set toを使用して Web サービスを作成するときに渡すことで簡単に実行できますtrue

public webService _webService = new webService() { UseDefaultCredentials = true };

Web サービス プロジェクトの NTLM 認証を無効にすることもできます。の下でこれを行うことができますProject Properties -> Web。このオプションをオフにすると、認証なしで Web サービスを追加できるはずです。

http://msdn.microsoft.com/en-us/library/aa378749.aspx

于 2011-09-12T10:30:07.173 に答える
2

vs2010 を使用して Web サービス参照を自動的に作成できません。wsdl.exe ツールを使用することにし、/parameters という名前のパラメーターで、プロキシ サーバーの資格情報を含む xml ファイルを渡します。

wsdl.exe http://service uri/service1.asmx /parameters:c:\temp\wsdlparameters.xml

WSDL.exe はファイル Service1.cs (デフォルト) を生成します。このファイルをプロジェクトに追加し、次のように使用します。

WebProxy wp = new WebProxy(@"YourProxyServer",ProxyPort);
wp.Credentials = new NetworkCredential("USERNAME", "PASSWORD");
Service1 service1 = new Service1();
service1.Proxy = wp;
service1."YourServiceMethod"();
于 2011-09-13T05:41:37.983 に答える