Web服务中错误处理的最佳实践

cwa*_*wap 6 .net error-handling web-services

我现在正在使用.NET框架(.asmx文件,而不是WCF)使用WebServices.我想知道告诉用户在方法调用中发生了某种业务错误的最佳做法是什么.

我的小测试用例:

我有测量探针需要注册中央服务器.每个探针应具有不同的物理地址.要注册,他们应该致电(通过网络服务):

[WebMethod]
public void RegisterReadingStation(out Guid sessionId, Int64 physicalAddress)
Run Code Online (Sandbox Code Playgroud)

现在,签名并非一成不变 - 实际上,这正是我想要弄清楚的.:)我需要以某种方式警告探测器是否正在尝试使用已经采用的物理地址进行自我注册.

我看到它的方式,我有几个可能性:

  • 抛出包含信息的SoapException.但是,string :: message实际上并不容易进行编程检查.
  • 使用某种值类作为返回参数(甚至更简单,枚举).如果我这样做,我想我必须手动序列化/反序列化服务器/客户端上的类?

有什么想法吗?

Moo*_*ose 5

我从每个WebMethod返回一个名为ResultSet的小类,它包含一个int errorcode和一个字符串errormessage.

这使您可以轻松检查错误/成功,并在出现问题时提供一些详细信息.

如果WebMethod需要返回数据,我将继承ResultSet以提供特定的ResultSet来包含数据.


Jos*_*ola 1

我认为普遍的共识是使用自定义返回代码(整数)。只要服务记录了可能的返回代码是什么,这应该是可行的。