0

我有一个带有布尔函数的soap接口,如果一切顺利,这个函数应该返回true,如果出现问题,这个函数应该返回false。

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

4

2 回答 2

1

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

如果它适合您的情况,那么您可以在服务器端生成带有指定消息的 Exception ,而不仅仅是 return false

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

您可以在此处找到更多详细信息。

于 2012-12-02T16:41:33.693 回答
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 ... */);
  }

有关相关讨论,请参阅为什么 WCF 合同会包含 ref/out 参数?.

于 2012-12-02T16:50:03.710 回答