Erreur: l'Héritage des règles de sécurité violé par type: 'Système.Web.Les pages web.De rasoir.WebPageRazorHost'
De nulle part mon ASP.NET MVC 4 solution me donne cette erreur:
Héritage des règles de sécurité violé par type: 'Système.Web.Les pages web.De rasoir.WebPageRazorHost'. Les types dérivés doit correspondre à la sécurité de l'accessibilité du type de base ou être moins accessible.
J'ai Googlé le problème, et tout le monde dit que c'est arrivé quand quelqu'un met à jour la solution à partir d'une version à l'autre. Mais je n'ai pas de mise à jour de ma solution, il suffit de changer l'IDE de VS12 à VS13. Est-ce ce qui crée le problème?
Le plein de trace de pile est comme suit:
[TypeLoadException: l'Héritage des règles de sécurité violé par type: System.Web.Les pages web.De rasoir.WebPageRazorHost'. Les types dérivés doit correspondre à la sécurité de l'accessibilité du type de base ou être moins accessible.]
Système.Web.Les pages web.De rasoir.RazorBuildProvider.get_CodeCompilerType() +0
Système.Web.La Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider) +59
Système.Web.La Compilation.BuildProvidersCompiler.ProcessBuildProviders() +209
Système.Web.La Compilation.BuildProvidersCompiler.PerformBuild() +30
Système.Web.La Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) +9971917
Système.Web.La Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +299
Système.Web.La Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext contexte, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +103
Système.Web.La Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext contexte, Boolean allowCrossApp, Boolean throwIfNotFound) +165
Système.Web.La Compilation.BuildManager.GetObjectFactory(String virtualPath, Boolean throwIfNotFound) +33
Système.Web.Mvc.BuildManagerWrapper.Système.Web.Mvc.IBuildManager.FileExists(String virtualPath) +40
Système.Web.Mvc.BuildManagerViewEngine.FileExists(ControllerContext controllerContext, Chaîne virtualPath) +54
Microsoft.Web.Mvc.FixedRazorViewEngine.Microsoft.Web.Mvc.IViewEngineProxy.FileExists(ControllerContext controllerContext, Chaîne virtualPath) +42
Microsoft.Web.Mvc.ViewEngineFixWorker1.FileExists(ControllerContext controllerContext, String virtualPath) +57
2 virtualPathExists) +90
Microsoft.Web.Mvc.<>c__DisplayClass4.<GetPathFromGeneralName>b__0(String path) +66
System.Web.WebPages.DefaultDisplayMode.GetDisplayInfo(HttpContextBase httpContext, String virtualPath, Func
Système.Web.Les pages web.<>c__DisplayClassb.b__8(IDisplayMode mode) +66
Système.Linq.WhereSelectListIterator2.MoveNext() +103
1 source, Func
System.Linq.Enumerable.FirstOrDefault(IEnumerable2 predicate) +94
2 virtualPathExists, IDisplayMode currentDisplayMode, Boolean requireConsistentDisplayMode) +297
System.Web.WebPages.DisplayModeProvider.GetDisplayInfoForVirtualPath(String virtualPath, HttpContextBase httpContext, Func
Système.Web.Les pages web.DisplayModeProvider.GetDisplayInfoForVirtualPath(String virtualPath, HttpContextBase httpContext, Func2 virtualPathExists, IDisplayMode currentDisplayMode) +108
1.GetPathFromGeneralName(ControllerContext controllerContext, Liste
Microsoft.Web.Mvc.ViewEngineFixWorker1 locations, String name, String controllerName, String areaName, String cacheKey, String[]& searchedLocations) +653
1.GetPath(ControllerContext controllerContext, String[] emplacements, String[] areaLocations, Chaîne locationsPropertyName, String nom, String controllerName, Chaîne cacheKeyPrefix, Boolean useCache, String[]& searchedLocations) +1508
Microsoft.Web.Mvc.ViewEngineFixWorker
Microsoft.Web.Mvc.ViewEngineFixWorker1.FindView(ControllerContext controllerContext, String viewName, String masterName, Boolean useCache) +329
2 recherche, Boolean trackSearchedPaths) +182
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
Système.Web.Mvc.ViewEngineCollection.Trouver(Func2 cacheLocator, Func
2 locator) +110
Système.Web.Mvc.ViewEngineCollection.FindView(ControllerContext controllerContext, Chaîne nomvue, Chaîne masterName) +329
Système.Web.Mvc.ViewResult.FindView(ControllerContext contexte) +135
Système.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext contexte) +230
Système.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +39
Système.Web.Mvc.<>c__DisplayClass1a.b__17() +74
Système.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filtre, ResultExecutingContext preContext, Func1 continuation) +388
1 filtres, ActionResult actionResult) +303
System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +72
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList
Système.Web.Mvc.Async.<>c__DisplayClass2a.b__20() +155
Système.Web.Mvc.Async.<>c__DisplayClass25.b__22(IAsyncResult asyncResult) +184
Système.Web.Mvc.Async.WrappedAsyncResult1.End() +136
1.Fin() +151
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
Système.Web.Mvc.Async.AsyncResultWrapper.Fin(IAsyncResult asyncResult, balise Object) +59
Système.Web.Mvc.Async.AsyncResultWrapper.Fin(IAsyncResult asyncResult, balise Object) +40
Système.Web.Mvc.Le contrôleur.EndExecuteCore(IAsyncResult asyncResult) +44
Système.Web.Mvc.Async.<>c__DisplayClass4.b__3(IAsyncResult ar) +47
Système.Web.Mvc.Async.WrappedAsyncResult1.End() +151
1.Fin() +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
Système.Web.Mvc.Async.AsyncResultWrapper.Fin(IAsyncResult asyncResult, balise Object) +59
Système.Web.Mvc.Async.AsyncResultWrapper.Fin(IAsyncResult asyncResult, balise Object) +40
Système.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40
Système.Web.Mvc.MvcHandler.Système.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult résultat) +38
Système.Web.CallHandlerExecutionStep.Système.Web.HttpApplication.IExecutionStep.Execute() +9651116
Système.Web.HttpApplication.ExecuteStep(IExecutionStep étape, Boolean& completedSynchronously) +155
- Essayez de supprimer le Système.Web.Rasoir de liaison d'assembly dans le web.config si elle est présente. (forums.asp.net/t/...)
- vous êtes génial. Je viens de perdre 6 heures sur elle. Merci beaucoup. Problème résolu
- Oui, il fonctionne! - Mais pourquoi est-ce un problème en premier lieu?
- vous devriez ajouter que comme la réponse si c'était la bonne. De cette façon, les autres savent que la réponse est...
Vous devez vous connecter pour publier un commentaire.
De mon ami Claudio Redi le commentaire de la solusion de ce problème est:
Essayez de supprimer le Système.Web.Rasoir de liaison d'assembly dans le web.config si elle est présente. http://forums.asp.net/t/1968686.aspx?Installed+Nuget+package+Rasoir+Moteur+ensemble+système+s'arrête
Aller sur le Web.config et de Recherche pour le nom de l'Assembly="le Système de.Web.Rasoir" et les commentaires comme suit.
Après avoir commenté enregistrez et exécutez le projet,cela fonctionnera très bien.
Pour moi commentant "le Système de.Web.Rasoir" à partir du web config n'a pas travaillé.Voici les choses que j'ai fait pour résoudre ce problème.
La recherche de votre solution d'ensemble pour les références à MvcWebRazorHostFactory. vous trouverez quelque chose comme ci-dessous dans le fichier de configuration.
Changer de Version=4.0.0.0 Version=5.0.0.0 et il va fonctionner.
En commentant la liaison de redirection comme suggéré ci-dessus, a travaillé pour 3 de mes anciennes machines, mais ne fonctionne pas sur un quatrième, machine plus récente.
S'avère que, en commentant la liaison rediriger apparemment juste permet de Système.Web.Rasoir version 1.0.0.0 être trouvé/utilisé, mais mon 4ème de la machine, une nouvelle construction de la machine, il ne manquait plus System.Web.Razor.DLL la version 1.0.0.0.
Copie Du Système.Web.Rasoir DLL de la version 1.0.0.0 à la machine dans le site web du dossier bin, alors mon problème a été résolu. Retrait 1.0.0.0 version de la DLL et de mettre la version 2.0.0.0 arrière, le problème est retourné.
Une autre découverte que j'ai faite concernant les machines, les bindingRedirect approche n'étant qu'une fois RazorEngine a fonctionné pour moi, après avoir commenté la liaison de redirection, j'ai pu dé-commentez-la liaison de redirection et RazorEngine continué à travailler.
Votre projet références sont à leur tour liés à différentes versions de Microsoft.AspNet.Rasoir de la bibliothèque, qui sont incompatibles entre eux.
Votre trace de la pile des points de
System.Web.WebPages
dll, ce qui est probablement à relier à une version de laMicrosoft.AspNet.Razor
plus âgé que celui référencé par d'autres NuGet package (par exempleMicrosoft.AspNet.Mvc
).Pour résoudre le problème:
System.Web.WebPages
, suppression de la référence et de commencer à l'aide de laSystem.Web.WebPages
package NuGetSystem.Web.WebPages
package NuGet, mettre à jour, à la même version de laMicrosoft.AspNet.Razor
paquet que vous utilisez déjà dans votre projet.Cela permettra de corriger votre erreur, mais sera probablement entraîner un nouveau apparaître, surtout si vous êtes de la migration ou de mélange de paquets entre
Microsoft.AspNet.Mvc
versions. Dans ce cas, vous avez besoin pour synchroniser les versions de tous vos packages NuGet liées à la MVC.