4

我的服务方法标有,PrincipalPermissionAttribute并且我有一个IErrorHandler附加到服务的自定义实现。当传入的请求没有执行该方法System.Security.SecurityException的权限时,将抛出该方法。IErrorHandler.ProvideFault()然后触发,我想提供一个特殊的故障。但是error参数不是原始异常,它是 untyped FaultException。此外,error.InnerException尽管我在配置中有以下设置,但仍为 null:

<serviceDebug includeExceptionDetailInFaults="true"/>

为什么?我怎样才能达到预期的行为?

4

1 回答 1

1

根据 SecurityException是 WCF 的一种“特殊”:

SecurityException 与 CAS(代码访问安全)有关,是致命异常。由于此异常与任何服务模型异常无关,因此无法由 IErrorHandler 处理。

所以我最终创建了额外的类,其中标记了方法(从实现服务接口的类的方法调用)PrincipalPermissionAttribute和一个带有 try/catch 的处理程序函数。

于 2011-01-27T12:04:59.650 回答