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创建了一个处理函数