문제

I tried to catch all exception of wcf sercue with/without SSL/TLS or endpoint, something like this:

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

        }

Can i check the available of wcf service without calling any method ( i tried Open() but not work at all)? Not sure i catch all cases of exception from WCF service? My purpose is if client got wcf exception with SSL/TSL or no endpoint, i should run a small utility console to fix app.config on client to map with wcf endpoint and . I really need your suggestions. Thanks

도움이 되었습니까?

해결책

You can always try to connect to the URL of the service and check the response code. Maybe not the best way, but it should work. e.g.

GET mysite/myservice.svc

and check for the HTTP status code.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top