WCF错误处理

时间:2012-12-02 08:20:32

标签: wcf error-handling

我有一个带有布尔函数的soap接口,如果一切成功,该函数应该返回true,如果出现错误则返回false。

如何在布尔函数上返回false + errormessage?

2 个答案:

答案 0 :(得分:1)

由于您的界面假定仅返回bool结果,因此无法返回其他字符串。

如果它适用于您的情况,那么您可以在服务器端生成带有指定消息的异常,而不仅仅返回false

在这种情况下,服务器将SOAP错误作为响应返回。 SOAP错误包含异常消息。因此客户端知道请求被处理错误,客户端能够读取错误消息 这是标准行为。

您可以找到更多详情here

答案 1 :(得分:0)

作为您问题的直接答案:是的,尽管不仅仅使用bool返回类型。只需将消息作为out参数传递/提供。

例如:

 [OperationContract]
 bool MyOperation(/* ... other arguments ..., */ out string message);

您应该考虑使用@Alexander Stepaniuk所说的异常,即故障,或考虑提供数据合同作为返回类型。

例如:

  [DataContract]
  public class MyResult
  {
       [DataMember]
       public bool Success { get; set; }

       [DataMember]
       public string ErrorMessage { get; set; }
  }

  [ServiceContract]
  public interface IMyContract
  {
       [OperationContract]
       MyResult MyFunction( /* ... other arguments ... */);
  }

有关相关讨论,请参阅Why would a WCF Contract include a ref/out parameter?