我正在开发分布式应用程序。其中包含我必须验证的角色和权限集。
抛出异常是个好习惯吗?例如,未授权访问?
或者我应该向客户发回一些消息吗?
最佳答案
在您的服务操作中,您可以指定一个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/