我的小组正在开发一个基于服务的 (.NET WCF) 应用程序,我们正在尝试决定如何处理内部服务中的异常。我们应该抛出异常吗?返回序列化为 XML 的异常?只是返回一个错误代码?
请记住,用户永远不会看到这些异常,它仅适用于应用程序的其他部分。
最佳答案
WCF 使用 SoapFaults
作为将异常从服务传输到客户端或从客户端传输到服务的 native 方式。
您可以使用契约接口(interface)中的 FaultContract
属性来声明自定义 SOAP 错误:
例如:
[ServiceContract(Namespace="foobar")]
interface IContract
{
[OperationContract]
[FaultContract(typeof(CustomFault))]
void DoSomething();
}
[DataContract(Namespace="Foobar")]
class CustomFault
{
[DataMember]
public string error;
public CustomFault(string err)
{
error = err;
}
}
class myService : IContract
{
public void DoSomething()
{
throw new FaultException<CustomFault>( new CustomFault("Custom Exception!"));
}
}
关于.net - Web 服务中的异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40122/