2012-08-23 20 views
14

Hola y gracias de antemano por la ayuda, Sé que esta pregunta o preguntas similares se han publicado, con frecuencia con respecto específicamente a MVC 3 aplicaciones. Sin embargo, recibo este mensaje de error cada vez que intento iniciar cualquier aplicación desde visual web developer express 2010 utilizando un framework de destino .net 4.0.System.MethodAccessException: Intento por método transparente de seguridad para acceder al método crítico de seguridad falla en todas las aplicaciones

El mensaje de error exacto es:

intento de seguridad método transparente 'System.Runtime.Diagnostics.DiagnosticTrace..ctor (System.String, System.Guid)' para acceder a la seguridad del sistema crítico método '. Runtime.Diagnostics.EtwDiagnosticTrace..ctor (System.String, System.Guid) 'failed'.

Ensamblaje 'System.ServiceModel.Internals, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' está marcado con AllowPartiallyTrustedCallersAttribute y utiliza el modelo de transparencia de seguridad de nivel 2. La transparencia de nivel 2 hace que todos los métodos en los ensamblados AllowPartiallyTrustedCallers se vuelvan transparentes a la seguridad de forma predeterminada, lo que puede ser la causa de esta excepción.

Seguimiento de la pila:

[MethodAccessException: Attempt by security transparent method 'System.Runtime.Diagnostics.DiagnosticTrace..ctor(System.String, System.Guid)' to access security critical method 'System.Runtime.Diagnostics.EtwDiagnosticTrace..ctor(System.String, System.Guid)' failed. 

Assembly 'System.ServiceModel.Internals, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is marked with the AllowPartiallyTrustedCallersAttribute, and uses the level 2 security transparency model. Level 2 transparency causes all methods in AllowPartiallyTrustedCallers assemblies to become security transparent by default, which may be the cause of this exception.] 
    System.Runtime.Diagnostics.DiagnosticTrace..ctor(String traceSourceName, Guid etwProviderId) +24 
    System.ServiceModel.Activation.FxTrace.InitializeTracing() +90 
    System.ServiceModel.Activation.FxTrace.get_Trace() +84 
    System.ServiceModel.ServiceHostingEnvironment.EnsureInitialized() +59 
    System.ServiceModel.ServiceHostingEnvironment.OnEnsureInitialized(Object state) +4 
    System.ServiceModel.AspNetPartialTrustHelpers.PartialTrustInvoke(ContextCallback callback, Object state) +52 
    System.ServiceModel.ServiceHostingEnvironment.SafeEnsureInitialized() +65 
    System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +58 
    System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +143 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69 

estoy completamente perdido aquí. Si creo cualquier aplicación básica desde cero y trato de ejecutarla, incluso sin agregar nada, aparece esta pantalla de error. He intentado quitar el marco atributo target = "4.0" de la etiqueta

<compilation debug="true" targetFramework="4.0" /> 

y ejecutarlo sin ningún resultado. He intentado quitar ese atributo y añadiendo

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0.30319"/> 
</startup> 

como se sugiere en este tema: BadImageFormatException - Is it possible to specify which .NET version is used to run an executable? He intentado reparar la instalación NET Framework 4.0 porque he oído que puede haber un problema. Acabo de instalar el desarrollador web visual ayer por la noche para trabajar en un proyecto que pasé de Microsoft Visual Studio 2010 porque mi versión de prueba expiró, cualquier ayuda o posibles soluciones alternativas serían apreciadas.

Respuesta

14

Experimenté este problema hoy. Por lo que yo entiendo, el problema es que los ensamblados de .NET 4.0 ahora de forma predeterminada a de seguridad crítica. No es posible que el código transparente de seguridad llame al código crítico de seguridad.

La solución en mi caso estaba relacionada con tener AllowPartiallyTrustedCallersAttribute definido en solo algunos de los ensamblajes en mi aplicación. Tenía que eliminar este atributo de todos los ensamblajes o agregarlo a todos ellos.

+0

He leído algo similar a esto en otros lugares, aunque no he podido implementarlo con éxito, creo que es la respuesta correcta. – Christian

+0

Quitar AllowPartiallyTrustedCallersAttribute de AssemblyInfo.cs funcionó para mi solución. Obtuve el error de un ensamblaje anterior que no estaba usando las últimas versiones de .Net framework. – Apogee

+0

Me encontré con esto después de actualizar un gran proyecto para .Net 4. Era una biblioteca ORM (Entity Spaces) que estaba decorada con AllowPartiallyTrustedCallersAttribute. Lo comenté y todo fue arreglado. ¡Gracias! –

0

Al parecer, una posible solución, que al menos hizo posible para mí para ejecutar aplicaciones en Visual Web Developer era la siguiente:

  • Retire la targetFramework = "4.0" atributo del elemento que es ubicado dentro del elemento.

  • Si se trata de una aplicación de Silverlight Haga clic derecho en las propiedades selectas cabecera ApplicationName.Web, a continuación, cambiar el marco objetivo a 3,5. Si se trata de una aplicación asp.net, haga clic en el encabezado del proyecto superior y seleccione propiedades y luego configure el marco de destino en 3.5.

Todo esto me sugiere que es un problema con mi instalación de .NET 4.0 framework. Pero como instalé y desinstalé e instalé el framework .Net 4.0 al menos dos veces, esta es la única opción que se me ocurre en este momento.Si alguien me proporciona una mejor respuesta/Una solución más permanente que me funcione, la marcaré como la respuesta. Mientras tanto, intentaré iniciar "instalar otros marcos" y volver a instalar el paquete de orientación de .NET 4.0 y .NET 4.0 Runtime una vez más para ver si funciona.

2

Es posible que deba agregar lo siguiente a su archivo AssemblyInfo.cs para que los ensamblados involucrados sean los mismos.

[assembly: SecurityTransparent()] 
+0

Esto funcionó para mí. Tengo un proyecto de biblioteca de clase C# (.Net 4.0) y un proyecto Windows Forms VB. Agregué "[assembly: SecurityTransparent()]" a AssemblyInfo.cs en el proyecto de la biblioteca C#, y el problema desapareció. –

+0

Funcionó para mí también. Tnks. –

1

Apreciar Estoy muy tarde a la fiesta aquí, sino en VS2013 y sufriendo el mismo problema con un proyecto de ClickOnce .NET 4.5.1, me fijo este problema:

  1. de abrir el proyecto propiedades del proyecto en cuestión ClickOnce
  2. Abrir la pestaña de Seguridad
  3. Cambio de los ajustes de seguridad de "Esta es una aplicación de confianza parcial"
  4. Cambio de los ajustes de seguridad de nuevo a "Esta es una aplicación de plena confianza"

Espero que esto ayude a alguien más!

Cuestiones relacionadas