2010-12-21 90 views
1

我正在使用Caliburn(一种MVVM框架)与Castle Windsor和WCF Facility结合使用。Caliburn/Castle WCF设施句柄EndpointNotFoundException

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

我想实现的是,如果没有找到端点,显示器显然无法显示,我想要显示一个视图来解释“显示此表单所需的网络服务无法找到,请尝试稍后再试。”。

钩住Castle/Caliburn集中处理此代码的最佳方式是什么,以便显示相同的错误视图,无论应用程序中的哪个位置由于EndpointNotFoundException而无法解析演示者?

任何想法?

我想避免把一个“的try/catch端点未找到”周围的所有主持人的决议只是柜面这取决于WCF ....

回答

1

快速(但有点脏,我意见)解决方案可以用救援过滤器装饰所有主叫演示者,从而允许救援方法截获该特定异常。 如果您有一个公共基类(您只需将其应用于公共祖先),则将过滤器应用于所有演示者可能相对容易,否则您必须手动应用过滤器或自定义路由消息堆栈(这是一个有点困难)。

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

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