2

次のコードを使用して、プロキシ サーバーの背後から Web サービスのメソッドを呼び出しています。

myWebService.TestWebService webservice = new myWebService.TestWebService();
webservice.Url = "http://test.com/webservice?wsdl";

WebProxy proxy = new WebProxy("1.2.3.4", 8080);
proxy.Credentials = new NetworkCredential("username", "password");
webservice.Proxy = proxy;

string response = webservice.TestWebMethod();

HTTP を使用している場合、これは正常に機能します。「応答」文字列で期待している応答を取得します。ただし、URL をHTTPSに変更すると、(401) Unauthorized応答が返されます。

URL をブラウザに入力すると、 HTTP または HTTPS を使用して正常に動作します

System.Net.ServicePointManager.ServerCertificateValidationCallbackデリゲートを作成して SSL 証明書の検証を処理するコードを追加しましたが、コードがここまで到達することはありません。証明書を検証する前にリクエストが拒否されたか、そう思われます。

どんな助けでも本当に感謝しています...

4

2 に答える 2

2

SSL URLに移動するためのクレデンシャルが必要ですか?
その場合は、Webサービスのクレデンシャルを設定する必要があります。

SSL URLを使用してVisualStudioでWeb参照を追加してみましたか?
Visual Studioを介してWeb参照を追加できない場合、コードも機能しません。

最後に設定するのがプロキシであることを確認できますか(たとえば、プロキシを設定する前にURLを変更します)。
プロキシが失われる可能性はわずかですが、これが最後に試す必要があります

于 2009-04-28T14:52:57.463 に答える
0

これはクライアント証明書を使用した例です(これは必要ないと確信しています)が、Webサービスへの資格情報を使用して洞察を提供する可能性があります。

WebService.ManageOutboundDelivery oWS = new WebService.ManageOutboundDelivery();

if (My.Settings.HasClientCert == true) {
    X509Certificate2 signedCert = new X509Certificate2(HttpContext.Current.Server.MapPath(My.Settings.ClientCertName), My.Settings.ClientCertPW);
    oWS.ClientCertificates.Add(signedCert);
}

System.Net.CredentialCache oCred = new System.Net.CredentialCache();
Net.NetworkCredential netCred = new Net.NetworkCredential(My.Settings.WebServiceUID, My.Settings.WebServicePW);

oCred.Add(new Uri(oWS.Url), "Basic", netCred);
oWS.Credentials = oCred;

SSL証明書が有効であることも確認しましたか?ブラウザからヒットするとこれが表示されると思いますが、プログラムでヒットしようとすると問題が発生する可能性があります。

于 2009-04-28T15:24:03.973 に答える