Vs2010を使用しています。単純なコンソールアプリで、古いasmxサービスであるhttp://***/service1.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を見つけます。
名前を付けて、[参照の追加]をクリックします。
更新:web config/appconfigを更新して追加してみてください。
<system.net>
<defaultProxy>
<proxy usesystemdefault="True" proxyaddress="http://[your proxy address and port number]" bypassonlocal="True"/>
</defaultProxy>
</system.net>
私は問題を見つけるのにほぼ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" />
参照の追加:
このように参照を追加していることを確認してください。 「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
をtrue
に設定してWebサービスを作成するときに渡すことで、これを簡単に行うことができます。
public webService _webService = new webService() { UseDefaultCredentials = true };
WebサービスプロジェクトのNTLM認証を無効にすることもできます。これはProject Properties -> Web
で実行できます。このオプションのチェックを外すと、認証せずにWebサービスを追加できるはずです。
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"();