我正在.Net 中构建一个基于 WCF 的服务应用程序。我目前正在设计合同。
我应该在我的服务响应中使用响应代码、异常或文本消息来报告服务结果状态吗?
它们将被 Web 应用程序和其他系统使用。
你应该看看 FaultContracts。请参阅http://msdn.microsoft.com/en-us/library/system.servicemodel.faultcontractattribute.aspx
您的故障合同可以包含用于客户端处理的(基于字符串的)错误代码,和/或用于向用户显示的文本消息。
如果您的服务,或者更确切地说是您作为服务设计者,不知道(未来)客户端应用程序想要对错误消息(显示或处理)做什么,请同时包含两者。
在我看来,最好的方法是使用对客户有意义的响应枚举(代码)。除此之外,返回消息可能会增加 WCF 服务上的数据负载。
例如
throw new FaultException<InvalidArgumentException>(new InvalidArgumentException(),Constants.MaxLengthFields.PhoneNumber)), Response.OrderIdMissing);
[DataContract, Serializable]
enum Response
{
[EnumMember]
OrderIdMissing,
[EnumMember]
ProductCodeInvalid,
}
网上有几篇文章可供参考。请通过他们了解更具体的信息。
http://blogs.msdn.com/b/brajens/archive/2007/04/23/exception-handling-in-wcf-web-service.aspx
http://blogs.msdn.com/b/brajens/archive/2007/04/23/exception-handling-in-wcf-web-service.aspx