2010-11-27 2 views
4

Mes méthodes de service sont marquées avec PrincipalPermissionAttribute et une implémentation IErrorHandler personnalisée est associée au service. Lorsqu'une demande entrante n'a pas les autorisations pour exécuter la méthode System.Security.SecurityException est levée. IErrorHandler.ProvideFault() est alors déclenché et je veux fournir un défaut spécial. Mais le paramètre error n'est pas une exception d'origine, il est non typé FaultException. De plus, error.InnerException est nul malgré que j'ai le paramètre suivant dans la config:comportement WCF IErrorHandler.ProvideFault()

<serviceDebug includeExceptionDetailInFaults="true"/> 

Pourquoi? Comment puis-je atteindre le comportement souhaité?

Répondre

1

Selon thisSecurityException est une sorte de "spécial" pour WCF:

SecurityException est lié au CAS (code d'accès de sécurité), et il est une exception fatale. Étant donné que cette exception n'est pas associée à des exceptions de modèle de service , elle ne peut pas être gérée par IErrorHandler.

donc j'ai fini en créant classe supplémentaire des méthodes (appelées des méthodes de la classe qui implémente l'interface de service) sont marqués d'PrincipalPermissionAttribute et une fonction de gestionnaire avec try/catch.

Questions connexes