代码之家  ›  专栏  ›  技术社区  ›  Assaf Stone

需要有关WCF扩展点的帮助才能在超时故障时重新构造通道

wcf
  •  0
  • Assaf Stone  · 技术社区  · 15 年前

    我正在尝试为我运行的每个WCF操作编写一个扩展,如果它返回超时错误,则允许我启动一个新代理并重试(一次)。

    我知道Michelle Leroux Bustamante编写了一个代码生成的代理,它也做同样的工作,但是我正在尝试在不需要修改或替换服务客户机的情况下完成这项工作(我从服务提供商那里得到了代理)。

    这有可能吗?从我认为是我需要的扩展点的iclientmessageintercepter来看,除了修改消息或对消息进行评论(即日志记录)之外,我无法找到其他方法。

    请帮忙, 谢谢- Assaf。

    2 回复  |  直到 15 年前
        1
  •  1
  •   tomasr    15 年前

    我认为您不能真的为此使用扩展点,因为它们都作为请求本身的“执行管道”的一部分运行,而不是作为请求外部运行。

    实际上,您最好的选择是修改代理,虽然我知道您从提供商那里获得了一个代理,但您没有理由不能保留所有数据合同和消息定义,并实现自己的自定义ClientBase<t>派生类来充当实际代理(您可以基于Mich生成的代码)。埃勒的工具)

    如果这也不是一个选项,那么我猜你会非常坚持按旧的方式来做:将提供者提供的代理包装在处理重试的类中。

        2
  •  1
  •   Krzysztof Kozmic    15 年前

    没有扩展点。

    然而, Castle WCF Facility 是WCF之上的一层智能,可以为您做到这一点。

    网站上的文档已经过时了,但是请查看单元测试,或者询问用户组是否有任何问题。