我有一个带有布尔函数的soap接口,如果一切顺利,这个函数应该返回true,如果出现问题,这个函数应该返回false。
如何在布尔函数上返回 false + errormessage ?
我有一个带有布尔函数的soap接口,如果一切顺利,这个函数应该返回true,如果出现问题,这个函数应该返回false。
如何在布尔函数上返回 false + errormessage ?
由于您的界面假定仅返回 bool 结果,因此您无法返回其他字符串。
如果它适合您的情况,那么您可以在服务器端生成带有指定消息的 Exception ,而不仅仅是 return false
。
在这种情况下,服务器会返回 SOAP 错误作为响应。SOAP 错误包含异常消息。所以客户端知道请求被错误处理并且客户端能够读取错误消息。
那是标准行为。
您可以在此处找到更多详细信息。
作为对您问题的直接回答:是的,这是可能的,尽管当然不仅使用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 参数?.