Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WindowsPhone7,silverlight-调用异步web服务时如何捕获EndpointNotFoundException?_C#_Silverlight_Web Services_Windows Phone 7 - Fatal编程技术网

C# WindowsPhone7,silverlight-调用异步web服务时如何捕获EndpointNotFoundException?

C# WindowsPhone7,silverlight-调用异步web服务时如何捕获EndpointNotFoundException?,c#,silverlight,web-services,windows-phone-7,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.GetSuppliersCompl

我正在从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;
        }
//从Webservice获取提供程序列表
RSAServiceClient proxy=新的RSAServiceClient();
proxy.GetSuppliersCompleted+=新系统.EventHandler(ProxyGetSuppliersCompleted);
尝试
{
proxy.GetSuppliersAsync();
}
捕获(EndpointNotFoundException)
{
//TODO:处理Web服务器不可用
}
捕获(例外)
{
投掷;
}
但这并没有捕获异常,显然GetSuppliersCompleted从未被调用,所以我无法在那里捕获它

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

你知道我在哪里可以处理这个吗


如果我错过了什么,但我已搜索但未找到解决方案,请道歉。

您应该将捕获内容放在您的
ProxyGetSuppliersCompleted
方法中

尝试访问结果将抛出您预期的错误


或者,在
ProxyGetSuppliersCompleted
中,您可以测试包含异常的EventArgs的
Error
属性。

我建议在启动任何代码前检查您是否可以访问Internet。只要检查是否有网络连接,如果没有,就通知用户。

我也有同样的问题。 这种行为不同于处理异常的Desktop Silverlight,也不同于根本不处理连接异常的WindowsPhone Silverlight

我在这里创建了一个主题:

没有人有真正的答案。 啊,是的,有一个技巧:您可以手动修改reference.cs以手动捕获异常。。。。但是如果你有很多功能,那就变成了一场噩梦


可能Microsoft开发人员没有测试所有的连接用例,他们忘记了实现这个用例(这是一个大的用例)。

ProxyGetSuppliersCompleted没有被调用,因为EndpointNotFoundException在Visual Studio生成的Reference.cs中被捕获为“未处理”。抱歉,我误解了。因为在调试Visual Studio时,我没有继续使用Reference.cs。如果我继续执行(或不进行调试),ProxyGetSuppliersCompleted中确实会捕获错误。干杯。感谢您提供的详细信息。您可以捕获异步方法处理程序中的错误(在我的示例ProxyGetSuppliersCompleted中)。这很好,你还有什么问题?当然值得做,但它不会解决我的问题。