Windows phone 7,silverlight - 如何在调用异步Web服务时捕获EndpointNotFoundException?

Fis*_*ake 6 c# silverlight web-services windows-phone-7

我正在从Silverlight Windows phone 7应用程序中调用Web服务,如果Web服务可用,它可以正常工作.如果Web服务不可用,则会捕获未处理的异常,但我似乎无法自己捕获它.我的尝试如下:

            //Get list of providers from Webservice
        RSAServiceClient proxy = new RSAServiceClient();
        proxy.GetSuppliersCompleted += new System.EventHandler<GetSuppliersCompletedEventArgs>(ProxyGetSuppliersCompleted);
        try
        {
            proxy.GetSuppliersAsync();
        }
        catch (EndpointNotFoundException)
        {
            //TODO: Handle webserice not being available
        }
        catch (Exception)
        {
            throw;
        }
Run Code Online (Sandbox Code Playgroud)

但是这并没有捕获异常,显然GetSuppliersCompleted永远不会被调用,所以我无法在那里捕获它.

然后我想我可以通过检查连接状态(proxy.State)来检测它,但是尽管Web服务没有运行,但是返回CommunicationState.Opened.

我有什么想法可以解决这个问题吗?

抱歉,如果我错过了一些东西,但我已经搜索过但没有找到解决方案.

Ant*_*nes 8

你应该把你的捕获物放在你的ProxyGetSuppliersCompleted方法中.

尝试访问结果将引发您期望的错误.

或者,ProxyGetSuppliersCompleted您可以测试Error将包含异常的EventArgs 的属性.

  • 对不起我误会了.因为虽然调试Visual Studio在Reference.cs中破坏了,但我没有继续.如果我继续执行(或者我没有调试),则确实在ProxyGetSuppliersCompleted中捕获了错误.干杯. (2认同)