Castelo Windsor não funciona sob confiança média
Ao tentar executar um aplicativo ASP.NET MVC que usa o Castle Windsor, ocorre o seguinte erro.
Erro de Servidor na '/' Aplicação.
Regras de segurança de herança violadas enquanto sobrescrevendo o membro: 'Castle.MicroKernel.DefaultKernel.InitializeLifetimeService ()'. A acessibilidade de segurança do método de substituição deve corresponder à acessibilidade de segurança do método que está sendo substituído.
Descrição: ocorreu uma exceção não tratada durante a execução da solicitação da web atual. Revise o rastreamento de pilha para obter mais informações sobre o erro e onde ele foi originado no código.
Detalhes da exceção: System.TypeLoadException: regras de segurança de herança violadas enquanto sobrescrevendo membro: 'Castle.MicroKernel.DefaultKernel.InitializeLifetimeService ()'. A acessibilidade de segurança do método de substituição deve corresponder à acessibilidade de segurança do método que está sendo substituído.
Erro de origem:
Uma exceção não tratada foi gerada durante a execução da solicitação da web atual. Informações sobre a origem e a localização da exceção podem ser identificadas usando o rastreamento de pilha de exceção abaixo.
Rastreamento de pilha:
[TypeLoadException: regras de segurança de herança violadas durante a substituição do membro: 'Castle.MicroKernel.DefaultKernel.InitializeLifetimeService ()'. A acessibilidade de segurança do método de substituição deve corresponder à acessibilidade de segurança do método que está sendo substituído.]
Castle.Windsor.WindsorContainer..ctor () +0
As assembleiasCastle.Core.dll
eCastle.Windsor.dll
foram construídos a partir do código-fonte disponível nogithub. O código fonte para os assemblies inclui o arquivoSecurityAssemblyInfo.cs
que tem o seguinte código-fonte:
// Sets up assembly level security settings
#if ! SILVERLIGHT
[assembly: System.Security.AllowPartiallyTrustedCallers]
#if DOTNET40
[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level2)]
#endif
#endif
Verifiquei usandoILSpy que oSystem.Security.AllowPartiallyTrustedCallers
atributo é declarado no assembly em ambos os arquivos.
O aplicativo da web está sendo executado com<trust level="Medium" />
.