1

我有一个包含多个操作的 WCF 服务。每个操作都有“PrincipalPermission”标签,如下所示:

[PrincipalPermission(SecurityAction.Demand, Role = "Administrator")]
public ProductsDto GetAllProducts()
{
     // Do operation here ...
}

问题是 - 如果用户不是“Administratir”角色的一部分 - 服务会抛出异常

请求主体权限失败

这会将客户端的通道破坏为“故障”状态。

我希望能够以某种方式捕捉到这一点并向客户发送“故障”消息,

这样客户就知道他试图做他不应该做的事情,而不会导致通道出错!

我尝试在操作中使用“try-catch”块,但没有帮助。异常发生在操作本身的“外部”。

我该如何解决这个问题?

4

1 回答 1

1

有一个特殊的接口IErrorHandler,您可以实现并连接 WCF 服务来处理异常。使用IErrorHandler将让您处理安全异常和序列化代码抛出的任何异常。

关于客户端通道进入故障状态的另一个注意事项:我建议为您从客户端执行的每个工作单元创建一个新的客户端对象。重用客户端对象会解决这类问题。

于 2012-05-06T12:37:10.983 回答