我正在尝试编写一个扩展,允许我为我运行的每个WCF操作,如果它返回超时错误,启动一个新代理并再次尝试(一次)。
我知道Michelle Leroux Bustamante编写了一个代码生成代理,但是我试图这样做,而不必修改或替换服务客户端(我从服务提供商传递代理) )。
这可能吗?通过查看IClientMessageIntercepter,我认为它是我需要的扩展点,除了修改消息或评论(即记录)消息之外,我无法弄清楚如何做任何事情。
请帮忙, 谢谢 - 阿萨夫。
答案 0 :(得分:1)
我认为你不能真正使用扩展点,因为它们都作为请求本身的“执行管道”的一部分运行,而不是在它之外。
真的,你最好的选择是修改后的代理,虽然我知道你从你的提供商处获得代理,但你没有理由不能保留所有数据合同和消息定义并实现你自己的自定义ClientBase&lt ; T> -derived类充当实际代理(可以基于Michelle工具生成的代码)。
如果那也不是一个选项,那么我猜你会以旧时尚的方式坚持下去:将你的提供商提供的代理包装在你自己的类中,处理你的重试。
答案 1 :(得分:1)