Caliburn / Castle WCF Facility处理EndpointNotFoundException

时间:2010-12-21 21:00:25

标签: wcf castle-windsor caliburn

我正在使用Caliburn(MVVM框架)与Castle Windsor和WCF Facility一起使用。

我的Presenter类有一个构造函数依赖项,它实际上是一个由Windsor容器提供的WCF契约。

我想要实现的是,如果找不到端点,显然无法显示该演示者,我想要显示的视图说明“无法找到显示此表单所需的网络服务。请再试一次后“。

连接到Castle / Caliburn以集中此代码的最佳方法是什么,以便显示相同的错误视图,无论应用程序在哪里,由于EndpointNotFoundException都无法解析演示者?

有什么想法吗?

我希望避免在所有演示者的分辨率上放置'try / catch endpoint-not-found',只是在WCF上接受它......

1 个答案:

答案 0 :(得分:1)

快速(但有点脏,在我看来)解决方案可能是使用Rescue过滤所有调用演示者进行装饰,从而允许救援方法拦截该特定异常。 如果您有一个公共基类(您只需将其应用于公共祖先),则将过滤器应用于所有演示者可能相对容易,否则您必须手动应用过滤器或自定义路由消息传递堆栈(这有点硬)。

您还可以使用代理而不是真实服务来构建某种“惰性实例化”。在此代理中,您可以在try / catch处理程序下解析真实的WCF服务,如果内部解析失败,则打开信息窗口。 我不太喜欢这个解决方案,因为你没有关于调用上下文的线索,所以 即使不合适,您也可以向用户显示信息。

我还想指出an elegant way to handle network outage,自动禁用打开需要网络连接的演示者的操作的启动点。