1

SSL/TLS またはエンドポイントの有無にかかわらず、次のような wcf sercue のすべての例外をキャッチしようとしました。

try
        {
            ServiceReference.ServiceClient serviceClient = new ChartLogicServiceClient();
            serviceClient.Open();
            serviceClient.Login("", "", "");
        }
        catch (SecurityNegotiationException negotiationException)
        {
            // Could not establish trust relationship for the SSL/TLS secure channel with authority 'localhost'.
            throw;
        }
        catch (ArgumentException argumentException)
        {
            // transport wrong config : The provided URI scheme 'https' is invalid; expected 'http'.
            //if (argumentException.Message == "The provided URI scheme 'http' is invalid; expected 'https'.\r\nParameter name: via")
            throw;
        }
        catch (MessageSecurityException messageSecurityException)
        {
            // transport wrong config: The HTTP request was forbidden with client authentication scheme 'Anonymous'.
            //- HTTP Request Error
            if (messageSecurityException.InnerException.Message == "The remote server returned an error: (403) Forbidden.")
            {
                throw;
            }
            else if (messageSecurityException.InnerException.Message == "The remote server returned an error: (404) Forbidden.")
            {
                throw;
            }
        }
        catch (EndpointNotFoundException endpointNotFoundException)
        {
            // no endpoint was found or IIS on server was turned off

        }

メソッドを呼び出さずに wcf サービスが利用可能かどうかを確認できますか (Open() を試しましたが、まったく機能しませんでした)。WCF サービスから例外のすべてのケースをキャッチできるかどうかわかりませんか? 私の目的は、クライアントが SSL/TSL またはエンドポイントなしで wcf 例外を取得した場合、小さなユーティリティ コンソールを実行してクライアントの app.config を修正し、wcf エンドポイントと . あなたの提案が本当に必要です。ありがとう

4

1 に答える 1

0

いつでもサービスの URL に接続して、応答コードを確認できます。最善の方法ではないかもしれませんが、うまくいくはずです。例えば

GET mysite/myservice.svc

HTTP ステータス コードを確認します。

于 2012-09-10T12:13:05.603 に答える