web-dev-qa-db-ja.com

プロキシサーバーの背後からWebサービス参照を追加する

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

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

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

9
Nikita

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>
7
WooHoo

私は問題を見つけるのにほぼ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" />
27

参照の追加:

このように参照を追加していることを確認してください。 「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を使用する場合は、クライアントプロジェクトでもデフォルトの資格情報を使用していることを確認する必要があります。 UseDefaultCredentialstrueに設定してWebサービスを作成するときに渡すことで、これを簡単に行うことができます。

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

WebサービスプロジェクトのNTLM認証を無効にすることもできます。これはProject Properties -> Webで実行できます。このオプションのチェックを外すと、認証せずにWebサービスを追加できるはずです。

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

3
eandersson

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"();
2
Nikita