【问题标题】:Adding new exception types to the WCF 4 routing service error handling向 WCF 4 路由服务错误处理添加新的异常类型
【发布时间】:2011-05-29 03:45:03
【问题描述】:

我正在使用 WCF 4 路由服务创建一个原型,利用错误处理功能创建一个直通路由器

我有一个要求,如果 WCF 服务生成自定义异常(在这种情况下称为 notPrimaryException),它应该以与 WCF4 路由服务错误处理中处理通信异常相同的方式进行处理,即,消息应重新发送到备份列表中的端点。

现在我了解到,这个自定义异常是从服务返回到路由器的,作为消息层的故障异常,而不是在传输层返回的通信异常。

我尝试使用消息检查器和 IErrorHandler 接口(ProvideFault 和 Handle Error)来识别路由器上是否发生 notPrimaryException,但在它作为未处理的故障异常返回客户端之前没有任何内容被拾取。我希望在路由器的某处拦截此故障并相应地重新发送消息,但我不知道是否有任何适当的行为。

有没有办法将额外的异常/故障类型硬塞到错误处理基础架构中,或者有没有我可能忽略的另一种方法?

感谢和问候,

伊万

【问题讨论】:

    标签: wcf routing error-handling


    【解决方案1】:

    您不应该在路由器上处理应用程序错误。通常,应用程序开发人员将 FaultExceptions 放置在服务上,期望能够在客户端上处理它们。

    如果客户端没有收到 FaultException,客户端如何知道出了什么问题?

    您应该在路由器上处理的唯一错误是传输层异常,应在应用程序中处理应用程序异常。

    【讨论】:

    • 格雷格,感谢您的意见。好的,返回应用程序错误似乎不是正确的方法。出于所有意图和目的,我试图返回的异常应该是传输层异常。我遇到的问题是如何抛出这个异常,让路由器拦截它并执行它的错误处理功能?
    • 您能否更具体地说明导致这些异常的原因?传输层错误可能是机器离线、身份验证失败或信号中断。我不认为你能做你想做的事,但你可以通过采用更标准的方法来实现你的目标。
    • Greg,我们有主备服务器对的概念。这些服务器对切换角色(即,当主服务器变为辅助服务器时,辅助服务器更改为主服务器)。服务应该只在主服务器上处理,所以如果主服务器成为辅助服务器,旧的辅助服务器将成为主服务器,所有服务请求都应该重定向到这个新的主服务器。这对客户端应该是透明的,因此路由器负责在服务器之间切换。我们将这些信息返回给客户是没有意义的
    • 好吧,这是有道理的。我会寻找一种让传输层处理切换的方法。我不确定这是路由器上的某种规则、负载平衡器还是 IIS 中的重定向。 ServerFault 上的某个人可能有更好的主意。我认为您不会通过在 WCF 中抛出异常来实现。
    猜你喜欢
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 2011-07-16
    • 1970-01-01
    相关资源
    最近更新 更多