关闭和处置WCF服务

时间:2008-08-23 02:29:18

标签: wcf web-services

Close上的ICommunicationObject方法可以抛出两种类型的异常,如MSDN概述here。我理解为什么Close方法可以抛出这些异常,但我不明白为什么服务代理上的Dispose方法在没有Close的情况下调用try方法周围。您的Dispose方法不是您想要的地方,确保您不会抛出任何例外吗?

2 个答案:

答案 0 :(得分:9)

它似乎是.NET代码中的常见设计模式。以下是来自Framework design guidelines

的引文
  

除了Dispose()之外,如果close是区域中的标准术语,请考虑提供方法Close()。这样做时,将Close实现与Dispose ...

相同是很重要的

这是一个blog post,您可以在其中找到此System.ServiceModel.ClientBase设计问题的解决方法

答案 1 :(得分:9)

是的,通常Dispose是您希望确保不会抛出异常的地方之一。但是,基于此MSDN forum thread,这种行为有一些历史原因。因此,推荐的模式是try {Close} / catch {Abort}范例。