J'ai une petite application Web. Ce qui fonctionnait bien jusqu'à ce que j'ajoute deux genericHandler dans mon application.
J'ai apporté les modifications suivantes au gestionnaire http
<system.web>
<authentication mode="Forms" >
<forms protection="All" timeout="720" defaultUrl="Default.aspx" loginUrl="Login.aspx" >
</forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<compilation debug="true" targetFramework="4.0" />
<httpHandlers>
<!--Code Log Handler-->
<add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory" />
<add verb="*" type="InfoDomeNewUI.Handler.SendOWA" path="SendOWA.ashx" />
<add verb="*" type="InfoDomeNewUI.Handler.SendSOS" path="SendSOS.ashx" />
</httpHandlers>
<customErrors mode="Off">
<error statusCode="404" redirect="Templates/PageNotFound.html" />
</customErrors>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<!--Code Log Handler-->
<add name="LogHandler1" path="SendOWA.ashx" verb="*" type="InfoDomeNewUI.Handler.SendOWA"/>
<!-- SMS SENDER-->
<add name="SendSOS" path="SendSOS.ashx" verb="*" type="InfoDomeNewUI.Handler.SendSOS"/>
</handlers>
</system.webServer>
Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
J'utilise asp.net4.0 et C #. Je n'utilise pas MVC
sur l'hôte local, cela fonctionne bien.
Mais lorsque j'héberge le code publié, cela me donne l'erreur ci-dessus.
Trace de la pile:-
[FileNotFoundException: impossible de charger le fichier ou l'assembly 'Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. Le système ne trouve pas le fichier spécifié.] System.Web.Http.WebHost.SuppressFormsAuthRedirectModule.Register () +0
[InvalidOperationException: La méthode d'initialisation de démarrage avant application Start on type System.Web.Http.WebHost.PreApplicationStartCode a levé une exception avec le message d'erreur suivant: Impossible de charger le fichier ou l'assembly 'Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 'ou l'une de ses dépendances. Le système ne trouve pas le fichier spécifié.] System.Web.Compilation.BuildManager.InvokePreStartInitMethods (méthodes ICollection`1) +11708830 System.Web.Compilation.BuildManager.CallPreStartInitMethods () +465 System.Web.Hosting.HostingEnvironment ( ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hébergementParamètres, PolicyLevel policyLeve
[HttpException (0x80004005): La méthode d'initialisation de démarrage de pré-application Start on type System.Web.Http.WebHost.PreApplicationStartCode a levé une exception avec le message d'erreur suivant: Impossible de charger le fichier ou l'assembly 'Microsoft.Web.Infrastructure, Version = 1.0 .0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié ..] System.Web.HttpRuntime.FirstRequestInit (contexte HttpContext) 11697760 System.Web.HttpRuntime.EnsureFirstRequestInit (contexte HttpContext) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr, HttpContext contexte) +4866485
Réponses:
Il semble que Microsoft.Web.Infrastructure.dll n'est pas installé dans le GAC, même si .net (4.0 ou 4.5 ou autre) est installé avec succès sur Windows Server. Sur localhost (généralement un client Windows), il semble qu'il se trouve dans le GAC lorsque les outils / la plate-forme (Visual Studio, etc.) sont installés.
Comme solution possible, essayez ce qui suit:
Exécutez la commande suivante dans la console du gestionnaire de package. (Si vous utilisez Visual Studio, cela peut être atteint via les options de menu "Outils -> Gestionnaire de package de bibliothèque -> Console du gestionnaire de package :)
Vous verrez les messages suivants s'il est correctement installé.
Vous remarquerez que Microsoft.Web.Infrastructure.dll a maintenant été ajouté en tant que référence (peut être vu dans le dossier des références de votre projet dans l'Explorateur de solutions)
Si vous regardez les propriétés de cette référence, vous remarquerez que " Copier Local " a été défini sur " True " par défaut.
Désormais, lorsque vous «publiez» votre projet, Microsoft.Web.Infrastructure.dll sera déployé.
la source
J'ai installé MVC4 via WPI et cela m'a aidé.
la source
J'ai eu le même problème. Lorsque j'ai essayé la réponse acceptée (rockyb), j'ai reçu le message que le package était déjà installé et affecté à mon projet. Quand j'ai vérifié la liste de références, elle n'était PAS référencée, cependant.
Microsoft.Web.Infrastructure a été installé dans le dossier packages de ma solution. Au lieu d'utiliser NuGet pour ajouter le package, j'ai simplement utilisé l'option Ajouter une référence. Sur le côté gauche de la fenêtre contextuelle, j'ai choisi Parcourir, puis j'ai appuyé sur le bouton Parcourir en bas de la fenêtre. J'ai navigué jusqu'au dossier packages sous le dossier dans lequel se trouvait ma solution, puis j'ai exploré le ... \ mysolution \ packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 et j'ai cliqué sur Microsoft.Web.Infrastructure .dll. Après avoir cliqué sur OK, le package est apparu dans ma liste de références. J'ai utilisé l'option Web Deploy Package pour déployer mon site Web et tout a fonctionné.
la source
Pourquoi ne pas copier manuellement le fichier Microsoft.Web.Infrastructure.dll dans le dossier BIN du serveur. Cela fonctionne pour. Mon projet est le site Web VS2010.
Ce fichier peut être localisé:
C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40
Copiez-le et collez-le simplement dans le dossier BIN.
Vous devrez probablement l'inclure dans le fichier web.config si vous ne l'avez pas déjà
Référence: http://thedeveloperblog.com/
la source
J'ai trouvé le problème. Au lieu d'ajouter un
(.cs)
fichier de classe par erreur, j'avais ajouté uneWeb API Controller
classe qui ajoutait un fichier de configuration dans ma solution. Et ce fichier de configuration recherchait la DLL mentionnée (Microsoft.Web.Infrastructure 1.0.0.0). Cela a fonctionné lorsque j'ai supprimé ce fichier, nettoyé l'application, puis publié.la source
Après avoir installé Microsoft.Web.Infrastructure via
Nuget-Package Manager
Copiez le
Microsoft.Web.Infrastructure.dll
manuellement à partir duNuget-Package
dossier de votre application Web, puis collez-le dans votre dossier bin de votre application Web déployée sur le serveur Web.Cela a fonctionné pour moi.
la source
Update-Package -reinstall Microsoft.Web.Infrastructure
n'a pas fonctionné pour moi, car je continuais à recevoir des erreurs indiquant qu'il était déjà installé.J'ai dû accéder au dossier Microsoft.Web.Infrastructure.1.0.0.0 dans le dossier packages et supprimer manuellement ce dossier.
Après cela, l'exécution l'a
Install-Package Microsoft.Web.Infrastructure
installé.Remarque: a
CopyLocal
été automatiquement défini sur true.la source
J'ai eu le même problème et le "Microsoft.Web.Infrastructure.dll" semblait manquer. J'ai essayé quelques conseils et installé MVC, etc. et rien n'a aidé. La solution consistait à installer «Web Services Enhancements (WSE) 1.0 SP1 pour Microsoft .NET» qui inclut Microsoft.Web.Infrastructure.dll. Disponible sur: http://www.microsoft.com/en-gb/download/details.aspx?id=4065
la source
J'ai eu le même problème. J'ai essayé d'installer Visual Studio 2010 SP1 mais cela n'a pas fonctionné.
Enfin, j'obtiens Microsoft.Web.Infrastructure.dll du collègue. Vous pouvez trouver la dll dans le PC de vos amis où le projet fonctionne parfaitement. Essayez de rechercher dll dans les fichiers temporaires / temporaires ASP.NET. Accédez à Temp en utilisant% temp% dans la fenêtre d'exécution.
Après avoir installé dll dans votre PC, ajoutez simplement une référence à votre projet et cela fonctionnera.
la source
La republication du site a résolu le problème pour moi.
la source
Était confronté au même problème et malheureusement rien ici ne fonctionnait. Enfin, je suis tombé sur ce lien: https://blogs.msdn.microsoft.com/jjameson/2009/11/18/the-copy-local-bug-in-visual-studio/
Il s'avère que la solution est un peu stupide: définissez Copy-Local pour la dll microsoft.web.infrastructure sur False, puis redéfinissez-la sur True.
Au fait, je pense que ce qui se passe, c'est qu'il existe deux versions de la dll microsoft.web.infrastructure, une pré-installée dans le GAC et une autre qui est maintenant un package nuget. Je pense que l'un masque l'autre, ce qui pose des problèmes. Dans mon cas particulier, sur mon serveur de build, j'ai besoin qu'il soit copié dans un dossier (ce dossier est ensuite compressé et envoyé au déploiement). Je suppose que le système en avait une copie localement et je pensais simplement "non, ça ira"
la source
J'ai un site Web contenant uniquement des fichiers. Ajout de MVC 5 à l'application Webforms (ciblant net45). J'ai dû modifier le packages.config
à
pour qu'il démarre sur la boîte locale en mode débogage (avait précédemment l'erreur décrite en haut). Exécution de VS 2017 sur Windows 7 ... ouvert via Fichier> Ouvrir> Site Web> Fichier (choisissez le répertoire racine en dehors d'IIS).
la source
J'ai eu le même problème après la mise à niveau d'un tas de packages NuGet.
J'ai essayé toutes sortes de suppression, de nettoyage, de réinstallation décrites ici et sans résultat. Les références n'avaient pas Microsoft.Web.Infrastructure bien que le gestionnaire NuGet ait montré qu'il était installé.
Le problème a été résolu en remplaçant:
avec
dans packages.config. Le coupable est apparemment "net45".
la source