page net mvc handling exceptions error custom create asp c# asp.net-mvc-4 exception

net - exceptions c#



Error: reglas de seguridad de herencia violadas por tipo: ''System.Web.WebPages.Razor.WebPageRazorHost'' (4)

De ninguna manera mi solución asp.net mvc 4 me da este error:

Las reglas de seguridad de herencia violadas por tipo: ''System.Web.WebPages.Razor.WebPageRazorHost''. Los tipos derivados deben coincidir con la accesibilidad de seguridad del tipo base o ser menos accesibles.

Busqué en Google el problema y todos dicen que ha sucedido cuando alguien actualiza esta solución de una versión a otra. Pero no actualicé mi solución, simplemente cambie el IDE de VS12 a VS13. ¿Es esto lo que crea el problema?

El seguimiento completo de la pila es el siguiente:

[TypeLoadException: reglas de seguridad de herencia violadas por tipo: System.Web.WebPages.Razor.WebPageRazorHost ''. Los tipos derivados deben coincidir con la accesibilidad de seguridad del tipo base o ser menos accesibles.] System.Web.WebPages.Razor.RazorBuildProvider.get_CodeCompilerType () +0 System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider (BuildProvider buildProvider) +59 Sistema. Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders () +209 System.Web.Compilation.BuildProvidersCompiler.PerformBuild () +30 System.Web.Compilation.BuildManager.CompileWebFile (VirtualPath virtualPath) +9971917 System.Web.Compilation.BuildManager.GetVPathBuildResultInternal (VirtualPath) virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) 299 System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert (HttpContext contexto, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +103 System.Web.Compilation.BuildManager.GetVir tualPathObjectFactory (VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound) +165 System.Web.Compilation.BuildManager.GetObjectFactory (String virtualPath, Boolean throwIfNotFound) +33 System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager. FileExists (String virtualPath) +40 System.Web.Mvc.BuildManagerViewEngine.FileExists (ControllerContext controllerContext, String virtualPath) +54 Microsoft.Web.Mvc.FixedRazorViewEngine.Microsoft.Web.Mvc.IViewEngineProxy.FileExists (ControllerContext controllerContext, String virtualPath) + 42 Microsoft.Web.Mvc.ViewEngineFixWorker 1.FileExists(ControllerContext controllerContext, String virtualPath) +57 Microsoft.Web.Mvc.<>c__DisplayClass4.<GetPathFromGeneralName>b__0(String path) +66 System.Web.WebPages.DefaultDisplayMode.GetDisplayInfo(HttpContextBase httpContext, String virtualPath, Func 2 virtualPathExists) +90 System.Web.WebPages. <> C__DisplayClassb.b__8 (modo IDisplayMode) +66 System.Linq.WhereSelectList 2.MoveNext() +103 System.Linq.Enumerable.FirstOrDefault(IEnumerable fuente 2.MoveNext() +103 System.Linq.Enumerable.FirstOrDefault(IEnumerable 1, 2 predicate) +94 System.Web.WebPages.DisplayModeProvider.GetDisplayInfoForVirtualPath(String virtualPath, HttpContextBase httpContext, Func Func 2 predicate) +94 System.Web.WebPages.DisplayModeProvider.GetDisplayInfoForVirtualPath(String virtualPath, HttpContextBase httpContext, Func 2 virtualPathExists, IDisplayMode currentDisplayMode, Boolean requireConsistentDisplayMode) +297 System.Web.WebPages.DisplayModeProvider.GetDisplayInfoForVirtualPath (String virtualPath, HttpContextBase httpContext, Func 2 virtualPathExists, IDisplayMode currentDisplayMode) +108 Microsoft.Web.Mvc.ViewEngineFixWorker 1.GetPathFromGeneralName (ControllerContext controllerContext, List 1 locations, String name, String controllerName, String areaName, String cacheKey, String[]& searchedLocations) +653 Microsoft.Web.Mvc.ViewEngineFixWorker 1.GetPath (ControllerContext controllerContext, String [] locations, String [] areaLocations, String locationsPropertyName, String name, String controllerName, String cacheKeyPrefix, Boolean useCache, String [] y searchesLocations) +1 508 Microsoft.Web.Mvc.ViewEngineFixWorker 1.FindView(ControllerContext controllerContext, String viewName, String masterName, Boolean useCache) +329 Microsoft.Web.Mvc.FixedRazorViewEngine.FindView(ControllerContext controllerContext, String viewName, String masterName, Boolean useCache) +66 System.Web.Mvc.<>c__DisplayClassc.<FindView>b__b(IViewEngine e) +68 System.Web.Mvc.ViewEngineCollection.Find(Func 2 lookup, Boolean trackSearchedPaths) +182 System.Web.Mvc.ViewEngineCollection.Find (Func 2 cacheLocator, Func 2 locator) +110 System.Web.Mvc.ViewEngineCollection.FindView (ControllerContext controllerContext, String viewName, String masterName) +329 System.Web.Mvc.ViewResult.FindView (ControllerContext context) +135 System.Web.Mvc .ViewResultBase.ExecuteResult (ControllerContext context) +230 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult (ControllerContext controllerContext, ActionResult actionResult) +39 System.Web.Mvc. <> C__DisplayClass1a.b__17 () +74 System.Web.Mvc.ControllerActi onInvoker.InvokeActionResultFilter (filtro IResultFilter, ResultExecutingContext preContext, Func 1 continuation) +388 System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +72 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList 1 filtros , ActionResult actionResult) +303 System.Web.Mvc.Async. <> C__DisplayClass2a.b__20 () +155 System.Web.Mvc.Async. <> C__DisplayClass25.b__22 (IAsyncResult asyncResult) +184 System.Web.Mvc.Async. WrappedAsyncResult 1.End() +136 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40 System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +40 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +47 System.Web.Mvc.Async.WrappedAsyncResult 1.End ( ) +151 System.Web.Mvc.Async.AsyncResultWrapper.End (IAsyncResult) asyncResult, etiqueta Object) +59 System.Web.Mvc.Async.AsyncResultWrapper.End (IAsyncResult asyncResult, etiqueta Object) +40 System.Web.Mvc.Controller.EndExecuteCore (IAsyncResult asyncResult) +44 System.Web.Mvc.Async. <> c__DisplayClass4.b__3 (IAsyncResult ar) +47 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +151 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39 System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +45 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +47 System.Web.Mvc.Async.WrappedAsyncResult 1.End () +151 System.Web.Mvc.Async.AsyncResultWrapper.End (IAsyncResult asyncResult, etiqueta Object) +59 System.Web.Mvc.Async.AsyncResultWrapp er.End (IAsyncResult asyncResult, etiqueta Object) +40 System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) +40 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest (resultado IAsyncResult) +38 Sistema. Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +9651116 System.Web.HttpApplication.ExecuteStep (paso IExecutionStep, booleano y completado sincrónicamente) +155


Comentando la redirección de enlace como se sugirió anteriormente funcionó para 3 de mis máquinas más antiguas, pero no funcionó en una cuarta máquina más nueva.

Resulta que comentar la redirección de enlace aparentemente solo permite que se encuentre / use System.Web.Razor versión 1.0.0.0, pero mi 4ª máquina, una máquina recién construida, carecía de System.Web.Razor.DLL versión 1.0.0.0.

Copiando System.Web.Razor versión 1.0.0.0 DLL a esa máquina en la carpeta bin del sitio web, entonces mi problema fue resuelto. Al eliminar la versión 1.0.0.0 y al volver a colocar la versión 2.0.0.0, se devuelve el problema.

Otro descubrimiento que hice con respecto a las máquinas donde funcionaba el enfoque bindingRedirect fue que una vez que RazorEngine funcionó para mí después de haber comentado la redirección de enlace, pude deshacer el comentario de la redirección de enlace y RazorEngine continuó funcionando.


Del comentario de mi amigo Claudio Redi, la solversión de este problema es:

Intente eliminar el enlace del ensamblado System.Web.Razor en web.config si está presente. forums.asp.net/t/…


Para mí, comentar sobre "System.Web.Razor" desde la configuración web no funcionó. Aquí están las cosas que hice para resolver esto. Busque en toda su solución las referencias a MvcWebRazorHostFactory. encontrará algo como a continuación en el archivo de configuración.

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Cambie Version = 4.0.0.0 a Version = 5.0.0.0 y funcionará.


Vaya a Web.config y busque el nombre del ensamblado = "System.Web.Razor" y comente de la siguiente manera.

<!--<dependentAssembly> <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly>-->

Después de Comentar guardar y ejecutar el proyecto, funcionará bien.