我有一个带有布尔函数的soap接口,如果一切成功,该函数应该返回true,如果出现错误则返回false。
如何在布尔函数上返回false + errormessage?
答案 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?。