我的服务方法被标记为PrincipalPermissionAttribute,并且我有一个自定义的IErrorHandler实现附加到该服务。当传入的请求没有执行该方法的权限时,将抛出System.Security.SecurityException。然后触发IErrorHandler.ProvideFault(),我想提供一个特殊的错误。但error参数不是原始异常,它是非类型化的FaultException。此外,尽管我在配置中设置了以下设置,但error.InnerException仍为空:
<serviceDebug includeExceptionDetailInFaults="true"/>为什么?我如何才能达到预期的行为?
发布于 2011-01-27 20:05:00
根据this的说法,SecurityException对于WCF来说是一种“特殊”:
SecurityException与代码访问安全相关,是一个致命的例外。由于此异常与任何服务模型异常无关,因此IErrorHandler无法处理它。
因此,我最后创建了额外的类,其中的方法(从实现服务接口的类的方法中调用)用PrincipalPermissionAttribute标记,并用try/catch标记一个处理函数。
https://stackoverflow.com/questions/4293828
复制相似问题