WCF IErrorHandler.providDefault()行为

WCF IErrorHandler.providDefault()行为,wcf,error-handling,ierrorhandler,Wcf,Error Handling,Ierrorhandler,我的服务方法用PrincipalPermissionAttribute标记,并且我有一个自定义IErrorHandler实现附加到服务。当传入请求没有执行方法的权限时,将抛出System.Security.SecurityExceptionIErrorHandler.providDefault()随后被触发,我想提供一个特殊的错误。但是error参数不是原始异常,它是非类型化的FaultException。此外,error.InnerException为空,尽管我在配置中有以下设置: <s

我的服务方法用
PrincipalPermissionAttribute
标记,并且我有一个自定义
IErrorHandler
实现附加到服务。当传入请求没有执行方法的权限时,将抛出System.Security.SecurityException<代码>IErrorHandler.providDefault()随后被触发,我想提供一个特殊的错误。但是
error
参数不是原始异常,它是非类型化的
FaultException
。此外,
error.InnerException
为空,尽管我在配置中有以下设置:

<serviceDebug includeExceptionDetailInFaults="true"/>

为什么??如何实现所需的行为?

根据
SecurityException
对WCF来说有点“特殊”:

SecurityException与CAS相关 (代码访问安全性),它是 致命的例外。因为这个例外 与任何服务模型都不相关 异常,它不能由 埃罗汉德勒

因此,我最终创建了一个附加类,其中的方法(从实现服务接口的类的方法调用)标记为
PrincipalPermissionAttribute
,并使用try/catch创建了一个处理函数