2011-11-28 69 views
2

我创建了一个WCF服务,用户需求是一次只有一个客户端连接到该服务。WCF服务maxConcurrentSessions

所以我的参数maxConcurrentSessions的值设置为1

它的工作很大,如果其他客户端尝试接收超时异常错误的具体时间后进行连接。

但我不喜欢超时异常错误发送到我想有一个像一个更具体的错误客户端:

出现超时,因为达到最大化的客户对服务的数量。

就是这样的。

有没有办法做到这一点?

感谢

+1

与另一个WCF服务包呢? – kenny

回答

0

您可以通过实现IErrorHandler

覆盖默认的例外从MSDN

要明确控件的应用程序时 抛出异常行为,实现IErrorHandler接口并将其添加到ErrorHandlers属性中。 IErrorHandler使您能够明确地控制生成的SOAP错误,决定是否将其发送回 客户端,并执行相关的任务,如日志记录。错误 处理程序按其添加到 ErrorHandlers属性的顺序调用。

落实ProvideFault方法来控制被 返回给客户端

故障消息还检查了这一个.Net WFC/Web service exception handling design pattern

+0

是的,但我的目标是想知道是否因为达到了maxconcurrent会话而发生此超时。我的意思是,客户端A连接到服务,客户端B连接但由于客户端已连接到服务而进入队列。客户端B在X次后发生超时,因为它无法进行连接。我如何知道发生超时是因为达到了最大会话。有一种方法可以知道在WCF中是否达到了maxconcurrentsession? – Hugo

+0

看起来你正在改变你的目标:),你最初的目标是发送一个特定的消息,为了实现你的新目标,一种方法可能是编写你的自定义绑定并使用maxoutboundconnectionsperendpoint http://msdn.microsoft.com/en-us /library/system.servicemodel.configuration.tcpconnectionpoolsettingselement.maxoutboundconnectionsperendpoint.aspx –

+0

哈哈哈,也许我解释不好谢谢你:) – Hugo