プロキシサーバーの後ろからWebサービスリファレンスを追加します
-
29-10-2019 - |
質問
VS2010を使用しています。シンプルなコンソールアプリでは、サービスの参照を追加しようとします http://***/service1.asmx
、古いASMXサービス。私のコンピューターはプロキシサーバーの背後にあるので、エラーが発生します。
「リモートサーバーは、予期しない応答を返しました。(407)プロキシ認証が必要です。」
WSDLツールを使用している場合、プロキシサーバーポート番号を定義できず、試験10.0.0.3:80のサーバーが応答しなかったというメッセージを受け取りますが、8080ポートを指定して方法がわかりません。参照を作成するにはどうすればよいですか?
解決
Webリファレンスを追加するときに、プロキシアドレスとサーバーポートを指定するには、以下のリンクをご覧ください。
http://msdn.microsoft.com/en-us/library/bb628649.aspx
http://msdn.microsoft.com/en-us/library/03seed2h.aspx
ASMXへの参照を追加します
コンソールアプリを右クリックして、[サービス参照の追加]を選択します。
詳細]ボタンをクリックして、アドレスバーにASMXアドレスを入力します。その横の緑色のボタンをクリックして、ASMXを発見します。
名前を付けて、[Refの追加]をクリックします。
更新:Web Config/ App ConfigとAddを更新してください。
<system.net>
<defaultProxy>
<proxy usesystemdefault="True" proxyaddress="http://[your proxy address and port number]" bypassonlocal="True"/>
</defaultProxy>
</system.net>
他のヒント
私はほぼ50時間を費やして問題を見つけましたが、この簡単なソリューションをウェブ上のどこにも見つけることができませんでした。
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" />
参照の追加:
このような参照を追加していることを確認してください。クリックする必要があります」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を使用する場合、おそらくクライアントプロジェクトでデフォルトの資格情報を使用することを確認する必要があります。 Web Serivceを使用して作成するときにそれを渡すことで、これを簡単に実行できます UseDefaultCredentials
に設定 true
.
public webService _webService = new webService() { UseDefaultCredentials = true };
WebサービスプロジェクトのNTLM認証を無効にすることもできます。これを行うことができます Project Properties -> Web
. 。このオプションを外すと、認証することなくWebサービスを追加できるはずです。
VS2010を使用してWebサービスリファレンスを自動的に作成することはできません。 wsdl.exeツールを使用することにしました。
wsdl.exe http://サービス 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"();