在我的Silverlight应用程序中,我使用Visual Studio生成的客户端(添加服务引用...)异步调用Web服务。
我的代码如下所示:Silverlight和WCF:处理'WCF down'异常/ WCF连接检查
ServiceClient serviceClient = new ServiceClient();
serviceClient.GetServerTimeCompleted += new EventHandler<GetServerTimeCompletedEventArgs>(serviceClient_GetServerTimeCompleted);
serviceClient.GetServerTimeAsync();
void serviceClient_GetServerTimeCompleted(object sender, GetServerTimeCompletedEventArgs e)
{
// do nothing atm
}
一切工作正常,只要该服务启动并运行,但是当服务没有运行,我得到:
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
“在 操作期间发生异常,导致结果无效。 检查InnerException以获取异常 的详细信息。“
的InnerException
“发生错误,而试图 做出请求URI 的‘http://’,这可能是 由于试图在一个交叉访问服务 没有适当的 跨域策略或者 策略不适用于SOAP 服务您可能需要联系 服务的所有者以发布 跨域策略文件,它允许发送与SOAP相关的HTTP标头 。通过使用Web 服务代理中的内部类型,而不使用 InternalsVisibleToAttribute属性,也可能导致此错误 。 请参阅内部异常 更多的细节。”
这是有道理的,我在这种情况下得到一个例外,但我无法弄清楚是怎么赶上我的客户端代码中的异常。是有一个标准的方法来做到这一点?如果我理解这是如何工作的,当我的代码调用生成的代码时,它会产生另一个线程,它实际调用Web服务并等待响应。该线程和生成的异常代码我的呼叫代码(见上)或我的回拨方式都没有机会看到异常情况
谢谢
Christian
感谢,我将深入探讨这些网页,但我不想改变我交谈的WCF的方式。使用添加服务引用非常“方便”,我没有时间atm .. – 2010-03-09 05:07:30