Tentative par la méthode transparente de sécurité 'WebMatrix.WebData.PreApplicationStartCode.Start ()'

179

Mise à jour: idem pour mvc 4 à mvc 5.

J'ai commencé un nouveau projet mvc 4 et y ai migré un projet mvc 3 (contrôleurs / modèles / scripts, etc.). Alors que tout se compile maintenant, j'obtiens l'erreur suivante:

La tentative par la méthode transparente de sécurité 'WebMatrix.WebData.PreApplicationStartCode.Start ()' pour accéder à la méthode critique de sécurité 'System.Web.WebPages.Razor.WebPageRazorHost.AddGlobalImport (System.String)' a échoué.

Je ne trouve rien sur le Web avec cette erreur. L'erreur survient avant d'entrer dans le démarrage de l'application.

J'ai essayé de réinstaller tous les assemblages avec nuget, en mettant un web.config «propre» en vain.

Quelqu'un a déjà eu ce problème?

Elger Mensonides
la source

Réponses:

249

Pour moi, cette erreur était parce que je n'avais PAS installé Microsoft.AspNet.WebHelpers après la mise à jour de MVC 4 vers MVC 5. Elle a été corrigée en installant le package NuGet

Install-Package -Id  Microsoft.AspNet.WebHelpers
Michael
la source
1
Cela a résolu le problème pour moi; cela a créé des problèmes d'espace de noms avec ma Resourcesclasse, mais je l'ai changé Properties.Resources.xxxxxet les problèmes ont été résolus.
Cody
2
J'ai couru cela et cela n'a pas fonctionné ... mais heureusement, j'ai vu que dans une autre réponse, il y a une deuxième commande à exécuter: stackoverflow.com/a/22587521/482256
Kevin Nelson
cela l'a corrigé pour moi mais j'avais également besoin de ce qui suit dans les liaisons d'assembly code<dependentAssembly> <assemblyIdentity name = "WebMatrix.WebData" publicKeyToken = "31bf3856ad364e35" culture = "neutral" /> <bindingRedirect oldVersion = "0.0.0.0-3.0.0.0 "newVersion =" 3.0.0.0 "/> </dependentAssembly>code
Marchief
J'installe le package mentionné ci-dessus et le problème est parti. J'ai utilisé NUget UI pour l'installer et cela a également installé toutes les dépendances pour moi
Atta H.
204

Si vous obtenez l'erreur

La tentative par la méthode transparente de sécurité 'WebMatrix.WebData.PreApplicationStartCode.Start ()' pour accéder à la méthode critique de sécurité 'System.Web.WebPages.Razor.WebPageRazorHost.AddGlobalImport (System.String)' a échoué.

Afin de résoudre ce problème, installez ce package à l'aide du gestionnaire de packages NuGet.

Install-Package Microsoft.AspNet.WebHelpers

Après cela, vous obtiendrez probablement une autre erreur

Impossible de charger l'assembly WebMatrix.Data version 3.0.0.0

pour résoudre ce problème, installez ce package à l'aide du gestionnaire de packages NuGet.

Install-Package Microsoft.AspNet.WebPages.Data
Anushka
la source
J'ai eu cette erreur exacte lors de la mise à niveau vers VS 2015 RTM. Le même code fonctionnait très bien avec VS 2013, la seule différence étant un nouveau fichier .config que 2015 génère pour IIS que je soupçonne que IISExpress 2013 ignore. Cette réponse a également corrigé ce cas, ajoutez les deux pépites.
angularsen
Il convient de mentionner que je n'ai pas réussi du tout à exécuter mon site Web avec VS2015 RTM. L'installation de Microsoft.AspNet.WebHelpers a corrigé le YSOD, mais j'ai eu un délai d'expiration en raison de certains droits d'accès SQL à la place. Le même code a fonctionné très bien dans VS2013.
angularsen
1
J'ai rencontré ce problème en utilisant VS 2013 Express Edition lors de la mise à niveau d'ASP .NET MVC 4 vers ASP .NET MVC 5. Cela a été utile puisque @Anushka a indiqué le deuxième problème avec une solution.
Jerameel Resco
J'obtiens cette erreur lorsque j'ai essayé d'exécuter ma solution dans VS 2015. Elle fonctionne parfaitement bien dans VS 2013. L'installation des 2 packages comme suggéré fonctionne mais je ne sais pas pourquoi je dois les installer. J'ai d'autres solutions que j'ai développées dans VS 2013 qui n'obtiennent pas cette erreur dans VS 2015.
John81
2
Nous avons constaté que VS2015 décide de mettre des DLL WebMatrix dans le répertoire bin de l'application Web lors de la compilation - VS2013 ne le fait pas. Je ne sais pas d'où 2015 obtient ces DLL, mais elles doivent être une version différente des DLL qui sont chargées à partir du GAC (je suppose) lorsque vous démarrez l'application qui a été compilée par VS2013 sans les DLL WebMatrix explicitement inclus dans le répertoire bin de l'application. Notez que si vous supprimez les 4 fichiers WebMatrix de la sortie 2015 et redémarrez IIS, le problème disparaît.
Simon Green
19

Pour toute personne qui atterrit ici et qui essaie de passer de MVC 4 à MVC5, j'ai pu résoudre ce problème en suivant les instructions à l' adresse http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade -un-projet-api-aspnet-mvc-4-et-web-api-vers-aspnet-mvc-5-et-api-web-2 .

J'ai également dû installer le package "Microsoft.AspNet.WebApi.WebHost" de nuget. Mais c'est tout.

Oh, et j'ai dû créer cette application <add key="owin:AutomaticAppStartup" value="false" />

:)

Alex Dresko
la source
14

J'ai essayé toutes les solutions ci-dessus et cela ne fonctionnait toujours pas, jusqu'à ce que je trouve que l'élément de compilation web.config faisait référence à la version 2.0.0.0 de WebMatrix.Data et WebMatrix.WebData. Changer la version de ces entrées dans le web.config en 3.0.0.0 m'a aidé.

Paul
la source
10

J'ai été aux prises avec un problème similaire lors de la mise mvc 4à niveau vers mvc 5:

La tentative par la méthode transparente de sécurité 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule ()' pour accéder à la méthode critique de sécurité 'System.Web.WebPages.ApplicationPart..ctor (System.Reflection.Assembly, System.String)' a échoué.

La case à cocher Supprimer les fichiers supplémentaires dans la boîte de dialogue de publication l'a résolu pour moi.

Edward Olamisan
la source
J'ai eu cette erreur dans mon application hébergée du fournisseur SharePoint 2013 (ASP.NET MVC 5, déployé sur Azure), «supprimer des fichiers supplémentaires» dans la boîte de dialogue de publication l'a également résolu pour moi.
Anatoly Mironov
8

La réinstallation Microsoft.AspNet.WebHelpersfonctionne pour moi

Update-Packagereinstall Microsoft.AspNet.WebHelpers
Pablo Claus
la source
6

Juste une autre suggestion ... Cela a été causé pour moi par de vieilles dll d'un projet MVC 3 après la mise à niveau vers MVC 5 dans le dossier bin du site sur le serveur de déploiement. Même si ces dll n'étaient plus utilisées par la base de code, elles semblaient être à l'origine du problème. Tout nettoyé et redéployé et c'était bien.

Chris
la source
C'était la raison de mon erreur. J'avais les anciens et les nouveaux fichiers dans le dossier bin. merci
Abhinaw Sharma
5

Vous pouvez également obtenir:

Impossible de charger le fichier ou l'assembly 'WebMatrix.Data, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition de manifeste de l'assembly localisé ne correspond pas à la référence d'assembly. (Exception de HRESULT: 0x80131040)

Cela a été déplacé vers ce package

 Install-Package Microsoft.AspNet.WebPages.Data

Vous devriez probablement faire une nouvelle compilation avant d'essayer l'une des réponses à cette question et après la mise à jour des packages

Simon_Weaver
la source
3

Voici comment j'ai résolu ce problème:

Ouvrez la console du gestionnaire de packages nuget et installez les packages nuget ci-dessous:

Install-Package WebMatrix.Data
Install-Package Microsoft.AspNet.WebHelpers
Update-Package

Nettoyez la solution, reconstruisez et mon application Web asp.net commence à fonctionner!

Mostafa
la source
2

La suppression de tous les fichiers de la corbeille, puis la reconstruction de la solution ont fonctionné pour moi.

theskhan
la source
1

Pour moi, cette erreur a été causée par DotNetOpenAuth non compatible avec MVC5 après la mise à niveau de MVC4 vers MVC5. La désinstallation de Microsoft.Web.WebPages.OAuth a résolu le problème.

Dean North
la source
1

Je l'ai supprimé de mes références, puis exécutez-le dans la console du gestionnaire de package

Install-Package WebMatrix.Data

Enfin, ajoutez l'assembly WebMatrix.WebData aux références et reconstruisez le projet.Cela fonctionne pour moi.J'espère que cela résout votre problème aussi.

Ali Gol Gol
la source
0

J'ai installé webapi avec via le package helppages nuget. Ce paquet a remplacé la plupart des binaires asp.net mvc 4 par des versions bêta qui ne fonctionnaient pas bien avec le reste du projet. Le correctif était de restaurer les dll d'origine mvc 4 et tout était bon.

Elger Mensonides
la source
0

J'ai eu le même problème, j'ai dû mettre à jour MVC Future (Microsoft.AspNet.Mvc.Futures)

Install-Package Microsoft.AspNet.Mvc.Futures
PvtVandales
la source
0

Pour moi, ces erreurs ont été résolues en ajoutant

<system.web>
 <trust level="Full">
 </system.web>

dans web.config

Omar Kamel
la source