2010-11-27 58 views
4

我的服務方法標有PrincipalPermissionAttribute,我有一個自定義的IErrorHandler實現附加到該服務。當傳入的請求沒有權限執行方法System.Security.SecurityException時被拋出。然後觸發IErrorHandler.ProvideFault(),我想提供一個特殊的錯誤。但error參數不是原始異常,它是無類型的FaultException。此外,error.InnerException爲null,儘管我在配置以下設置:WCF IErrorHandler.ProvideFault()行爲

<serviceDebug includeExceptionDetailInFaults="true"/> 

爲什麼?我怎樣才能達到理想的行爲?

回答

1

根據thisSecurityException是一種 「特殊」 的WCF:

拋出:SecurityException有關CAS (代碼訪問安全),它是一個 致命的異常。由於此異常 與任何服務模型 異常無關,因此無法通過 IErrorHandler進行處理。

所以我最終通過創建方法(從實現服務接口的類的方法調用)都標有PrincipalPermissionAttribute與try/catch語句的處理函數附加類。