C# 如何检查Silverlight OOB中的internet连接是否可用

C# 如何检查Silverlight OOB中的internet连接是否可用,c#,silverlight-4.0,silverlight-oob,C#,Silverlight 4.0,Silverlight Oob,我有一个Silverlight 4应用程序,它已经用完了浏览器,它也有一个web服务,它可以与特定的功能对话 我正在试图找出如何检查web服务是否可用,因为当internet连接中断时,应用程序正在崩溃。最简单的答案是向web服务发出请求!你做的任何其他事情都会告诉你是否可以和某个特定的主持人或其他人交谈,但这并不是你真正关心的。。。您关心是否可以与特定的web服务对话。就您的应用程序而言,web服务关闭相当于internet关闭 找到一个便宜且无害的请求,作为测试调用,并使用它。当然,仅仅因为

我有一个Silverlight 4应用程序,它已经用完了浏览器,它也有一个web服务,它可以与特定的功能对话


我正在试图找出如何检查web服务是否可用,因为当internet连接中断时,应用程序正在崩溃。

最简单的答案是向web服务发出请求!你做的任何其他事情都会告诉你是否可以和某个特定的主持人或其他人交谈,但这并不是你真正关心的。。。您关心是否可以与特定的web服务对话。就您的应用程序而言,web服务关闭相当于internet关闭


找到一个便宜且无害的请求,作为测试调用,并使用它。当然,仅仅因为你现在有了连接并不意味着几分钟后你就有了连接。。。因此,你仍然应该确保当连接断开时,你的应用程序不会真正崩溃。这实际上应该是你的第一要务:让它优雅地失败。

最简单的答案是向web服务发出请求!你做的任何其他事情都会告诉你是否可以和某个特定的主持人或其他人交谈,但这并不是你真正关心的。。。您关心是否可以与特定的web服务对话。就您的应用程序而言,web服务关闭相当于internet关闭


找到一个便宜且无害的请求,作为测试调用,并使用它。当然,仅仅因为你现在有了连接并不意味着几分钟后你就有了连接。。。因此,你仍然应该确保当连接断开时,你的应用程序不会真正崩溃。在我看来,这应该是你的首要任务:让它优雅地失败。

我找到了以下解决方案

NetworkChange.NetworkAddressChanged += (sender, e) =>
{
   if (NetworkInterface.GetIsNetworkAvailable())
   {
       // network available
   }
   else
   {  
       // network is not available
   }
}

我找到了以下解决方案

NetworkChange.NetworkAddressChanged += (sender, e) =>
{
   if (NetworkInterface.GetIsNetworkAvailable())
   {
       // network available
   }
   else
   {  
       // network is not available
   }
}

正确,正确,正确。我不太关心互联网,我更关心的是我是否能连接到网络服务,因为这是我唯一尝试在互联网上访问的东西。但是,为了向服务发出请求(据我所知),需要创建客户机,然后调用其中一个异步函数。但创建客户端会使应用程序在内部线程中崩溃,因为该服务不可用。此外,这根本不是答案,因为它没有回答我的问题,只是暗示我应该如何处理我的解决方案。我不知道这是怎么被标记为答案的。@Epic720:听起来你的客户破产了。您应该研究如何解决这个问题,而不是试图找到一个解决方法,在测试请求后断开连接时,该方法会再次中断。然而,如果不知道你在谈论什么样的客户,就很难给出任何建议。这个代码在你的控制之下吗?自动生成代码?第三方代码?这是什么样的碰撞?您是否获得异常和堆栈跟踪?创建客户机时,即使没有发出请求,您真的会崩溃吗?@Jon Skeet:因为web服务有异步调用,所以崩溃发生在Reference.cs(将web服务添加到项目中自动生成的文件)中。似乎我可以对这个文件进行更改,在任何地方添加一个try-catch块。但我不认为这是一个有效的解决方案。我在创建客户端时错误地说它会崩溃,如果没有internet连接,我可以创建客户端。它只有在我调用一个异步函数时才会崩溃。@Epic720:那么您是如何生成客户端的呢?坠机是什么样子的?您是否可以连接任何事件来处理错误?这听起来不太可能让你无法避免应用程序的消亡。对,对,对。我不太关心互联网,我更关心的是我是否能连接到网络服务,因为这是我唯一尝试在互联网上访问的东西。但是,为了向服务发出请求(据我所知),需要创建客户机,然后调用其中一个异步函数。但创建客户端会使应用程序在内部线程中崩溃,因为该服务不可用。此外,这根本不是答案,因为它没有回答我的问题,只是暗示我应该如何处理我的解决方案。我不知道这是怎么被标记为答案的。@Epic720:听起来你的客户破产了。您应该研究如何解决这个问题,而不是试图找到一个解决方法,在测试请求后断开连接时,该方法会再次中断。然而,如果不知道你在谈论什么样的客户,就很难给出任何建议。这个代码在你的控制之下吗?自动生成代码?第三方代码?这是什么样的碰撞?您是否获得异常和堆栈跟踪?创建客户机时,即使没有发出请求,您真的会崩溃吗?@Jon Skeet:因为web服务有异步调用,所以崩溃发生在Reference.cs(将web服务添加到项目中自动生成的文件)中。似乎我可以对这个文件进行更改,在任何地方添加一个try-catch块。但我不认为这是一个有效的解决方案。我在创建客户端时错误地说它会崩溃,如果没有internet连接,我可以创建客户端。它只有在我调用一个异步函数时才会崩溃。@Epic720:那么您是如何生成客户端的呢?坠机是什么样子的?您是否可以连接任何事件来处理错误?这听起来不太可能让你无法避免应用程序的消亡。我仍然需要一个真正的答案。我仍然需要一个真正的答案。这不是特定于互联网连接。如果存在到路由器的连接,则此操作将成功,并且这并不是可以使用web服务的internet连接所独有的。这并不特定于internet连接。如果有一个到路由器的连接,这将成功,并且这不是唯一的互联网连接,在互联网连接中,我们可以使用