Castle Windsor no funciona bajo Medium Trust
Al intentar ejecutar una aplicación MVC de ASP.NET que utiliza Castle Windsor, se produce el siguiente error.
Error del servidor en la aplicación '/'.
Se violaron las reglas de seguridad de herencia al anular el miembro: 'Castle.MicroKernel.DefaultKernel.InitializeLifetimeService ()'. La accesibilidad de seguridad del método de anulación debe coincidir con la accesibilidad de seguridad del método que se sobrescribe.
Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.
Detalles de la excepción: System.TypeLoadException: reglas de seguridad de herencia infringidas al anular el miembro: 'Castle.MicroKernel.DefaultKernel.InitializeLifetimeService ()'. La accesibilidad de seguridad del método de anulación debe coincidir con la accesibilidad de seguridad del método que se sobrescribe.
Error de fuente:
Se generó una excepción no controlada durante la ejecución de la solicitud web actual. La información sobre el origen y la ubicación de la excepción se puede identificar mediante el seguimiento de la pila de excepciones a continuación.
Traza de la pila:
[TypeLoadException: se violaron las reglas de seguridad de herencia al anular el miembro: 'Castle.MicroKernel.DefaultKernel.InitializeLifetimeService ()'. La accesibilidad de seguridad del método de anulación debe coincidir con la accesibilidad de seguridad del método que se sobrescribe.]
Castle.Windsor.WindsorContainer..ctor () +0
Las asambleasCastle.Core.dll
yCastle.Windsor.dll
se han construido a partir del código fuente disponible engithub. El código fuente de los ensamblajes incluye el archivo.SecurityAssemblyInfo.cs
que tiene el siguiente código fuente:
// Sets up assembly level security settings
#if ! SILVERLIGHT
[assembly: System.Security.AllowPartiallyTrustedCallers]
#if DOTNET40
[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level2)]
#endif
#endif
He verificado utilizandoILSpy que elSystem.Security.AllowPartiallyTrustedCallers
El atributo se declara en el ensamblaje en ambos archivos.
La aplicación web se está ejecutando con<trust level="Medium" />
.