【问题标题】:Throwing exception from WCF Service without faulting从 WCF 服务抛出异常而不会出错
【发布时间】:2012-04-30 07:40:48
【问题描述】:

当从 WCF 服务抛出 FaultException 时,有没有一种方法可以在不破坏实际连接的情况下抛出它?我希望阻止针对特定方法的操作,但不想中断客户端的连接(只是返回说“您现在不能执行此操作,这就是原因”) .或者,是在 .NET 消费应用程序中重新创建新代理所需的范例(在 .NET 的情况下

【问题讨论】:

    标签: wcf .net-3.5 faultexception


    【解决方案1】:

    您使用的是 .NET 4.0,是否可以使用 WebFaultException 返回带有适当错误原因的 HTTP 状态代码?

    【讨论】:

    • 不幸的是,我的目标是 3.5。
    【解决方案2】:

    如果你抛出一个 FaultException,那么客户端会得到一个异常,但应该能够继续使用相同的连接。如果您让任何其他类型的异常退出服务(没有自定义错误处理程序),那么它将导致通道出错

    【讨论】:

    • 到目前为止,我只从我的客户凭证验证器类中抛出了一个错误异常。收到后,连接出现故障。正如您所说,从合同方法中抛出错误异常不会导致错误吗?
    • 如果这是自定义用户名/密码验证器,那么您应该只抛出 SecurityTokenValidationException。如果您从合约方法中抛出 FaultException(或使用自定义错误处理程序),那么您不会使通道出错
    • 我意识到这不是我最初的问题,但这篇 MSDN 文章指出要从验证器中抛出一个 FaultException。当我这样做时,连接失败(这是客户端应用程序期望的行为)。这就是为什么我虽然从服务合同方法中抛出一个 FaultException 会表现得类似。 msdn.microsoft.com/en-us/library/aa702565.aspx
    • 但是,您关于抛出 FaultException 并且不会导致客户端连接故障的答案是正确的,因此我将其标记为已回答。谢谢。
    猜你喜欢
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多