WCF服务的构造函数应该使用错误进行错误处理吗?

问题描述:

我有一个wcf服务。服务本身(继承ServiceContract的类)有一个构造函数,有时会抛出异常。如果服务失败,我想向用户显示一条消息。我应该像使用服务方法一样使用错误吗?WCF服务的构造函数应该使用错误进行错误处理吗?

+2

为什么你的WCF服务有一个可能失败的构造函数?而且,老实说......为什么它有一个构造函数呢? WCF可以随意创建和销毁服务实例......您只是通过使用构造函数来请求问题,特别是如果它可以抛出异常。 – jrista 2009-08-27 16:34:30

故障通常意味着跨服务边界提供错误信息,并且在大多数情况下,故障将作为对畸形或无效请求消息的响应发送。鉴于此,我会说在这里没有道理。

我同意上面的评论,一个服务类的构造函数应该避免抛出异常。如果您的服务是会话式的,那么您可能需要考虑一种设计,通过特定的服务操作来执行此类初始化。这可以在WCF中通过在[OperationContract]属性中用“IsInitiating = true”标记这样的服务操作来完成。在那一点上,你能够产生故障,并有一些希望达到预期的客户端。