我正在开发分布式应用程序。其中包含我必须验证的角色和权限集。
抛出异常(例如未经授权的访问)是一个好习惯吗?
还是应该向客户发送一些消息?
最佳答案
在您的服务操作中,您可以指定 FaultContract ,它将同时满足两个目的:
[OperationContract]
[FaultContract(typeof(MyServiceFault))]
void MyServiceOperation();
请注意,必须以与复杂类型相同的方式用MyDataFault标记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"
}