首页 文章

如何防止错误的WCF客户端'Request for principal permission failed'?

提问于
浏览
0

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

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

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

Request for principal permission failed

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

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

所以客户知道他试图做他不应该做的事情,而不会让渠道出错!

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

我怎么解决这个问题?

1 回答

  • 1

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

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

相关问题