c# - Wcf 服务异常良好实践

标签 c# .net wcf web-services

我正在开发分布式应用程序。其中包含我必须验证的角色和权限集。
抛出异常是个好习惯吗?例如,未授权访问
或者我应该向客户发回一些消息吗?

最佳答案

在您的服务操作中,您可以指定一个FaultContract来满足这两个目的,如下所示:

[OperationContract]
[FaultContract(typeof(MyServiceFault))]
void MyServiceOperation();

请注意,MyServiceFault 必须用 DataContract 和 DataMember 属性标记,就像您标记复杂类型一样:

[DataContract]
public class MyServiceFault
{
    private string _message;

    public MyServiceFault(string message)
    {
        _message = message;
    }

    [DataMember]
    public string Message { get { return _message; } set { _message = value; } }
}

在服务端,您可以:

throw new FaultException<MyServiceFault>(new MyServiceFault("Unauthorized Access"));

在客户端:

try
{
    ...
}
catch (FaultException<MyServiceFault> fault)
{
    // fault.Detail.Message contains "Unauthorized Access"
}

关于c# - Wcf 服务异常良好实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12647615/

相关文章:

c# - 为什么我的数组索引在此算法中越界?

c# - WCF SOAP 服务不能返回 JSON 作为输出吗?

c# - 共享点 2010 "unhandled win32 exception occurred in W3WP.EXE"

c# - 当线程区域性不是英语时,.NET CookieException "Cookie format error"- 仅在某些环境中

c# - 如何从 InternetExplorer 对象查看源 HTML?

c# - 在 Silverlight 中使用 DataForm 中的密码文本框

WCF 中的 c# 绑定(bind)错误

java - 轴2 : Avoid "Unexpected subelement" error when non-required property added to WSDL

c# - 在C#中播放音频时出现白噪声

c# - DateTime 的 ToLongString 方法不返回日期名称