.net - Web 服务中的异常(exception)

标签 .net wcf web-services exception

我的小组正在开发一个基于服务的 (.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/

相关文章:

.net - Cocoa 小数和 Protocol Buffer ,与 .NET 兼容

c# - 使用哪个通用集合?

wcf - 为什么 WCF 服务使用接口(interface)作为服务契约而不是抽象类?

java.sql.SQLException : Parameter index out of range (3 > number of parameters, 这是 2)

c# - 收到的 Web 服务 XML 响应为 "text/plain"。 (又一个内容类型错误。)

c++ - 无法引用自定义用户控件

c# - 无法将 DBNull.Value 转换为类型 'System.DateTime' 。请使用可空类型

c# - 在 WCF 服务中使用大量数据后清理内存

c# - 异步 WCF 服务和调用持续时间性能计数器

java - Spring Boot 并行发布 REST 和 SOAP