如何防止“主要许可申请失败”#39;来自错误的WCF客户端?

时间:2012-05-06 12:34:17

标签: wcf authorization principal

我有一个WCF服务,有几个操作。 每个操作都有'PrincipalPermission'标记,如下所示:

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

问题是 - 如果用户不属于“Administratir”角色,则服务会抛出异常

申请校长许可失败

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

我希望能够以某种方式捕获此信息并向客户端发送“故障”消息,

这样客户就知道他试图做一些他不应该做的事情,而不会破坏频道!

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

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