94 votes

Erreur Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

J'ai une petite application web. Qui fonctionnait bien jusqu'à ce que j'ajoute deux genericHandler dans mon application.

J'ai effectué les modifications suivantes pour le 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, tout fonctionne bien.
Mais lorsque j'héberge le code publié, il me donne l'erreur ci-dessus.

Stack Trace:-

[FileNotFoundException : Impossible de charger le fichier ou l'assemblage '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.Http.WebHost.SuppressFormsAuthRedirectModule.Register() +0

[InvalidOperationException : La méthode d'initialisation du démarrage de la préapplication Start sur le type System.Web.Http.WebHost.PreApplicationStartCode a généré une exception avec le message d'erreur suivant : Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Le système ne peut pas trouver le fichier spécifié ] System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +11708830 System.Web.Compilation.BuildManager.CallPreStartInitMethods() +465 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLeve

[HttpException (0x80004005) : La méthode d'initialisation du démarrage de la préapplication Start sur le type System.Web.Http.WebHost.PreApplicationStartCode a généré une exception avec le message d'erreur suivant : Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Le système ne peut pas trouver le fichier spécifié ] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11697760 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4866485

202voto

user1713279 Points 631

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 (typiquement un client Windows), il semble qu'il soit installé dans le GAC lorsque les outils/plateforme (Visual Studio, etc.) sont installés.

Comme solution possible, veuillez essayer ce qui suit :

  1. Exécutez la commande suivante dans la console du gestionnaire de paquets. (Si vous utilisez Visual Studio, vous pouvez y accéder via les options de menu "Tools --> Library Package Manager --> Package Manager Console :)

    PM> Install-Package Microsoft.Web.Infrastructure

    Vous verrez les messages suivants si l'installation a réussi.

    Successfully installed 'Microsoft.Web.Infrastructure 1.0.0.0'.
    Successfully added 'Microsoft.Web.Infrastructure 1.0.0.0' to Web.
  2. Vous remarquerez que Microsoft.Web.Infrastructure.dll a maintenant été ajouté en tant que référence (vous pouvez le voir dans le dossier des références de votre projet dans l'explorateur de solutions).

  3. Si vous regardez les propriétés de cette référence, vous remarquerez que " Copie locale "a été réglé sur " Véritable "par défaut.

  4. Maintenant, lorsque vous "publiez" votre projet, Microsoft.Web.Infrastructure.dll seront déployés.

19voto

Alex Shyba Points 913

J'ai installé MVC4 via WPI et cela m'a aidé.

15voto

Glenn Gordon Points 67

J'ai eu le même problème. Lorsque j'ai essayé la réponse acceptée (rockyb), j'ai obtenu le message que le paquet était déjà installé et attribué à mon projet. Lorsque j'ai vérifié la liste des références, il n'était cependant PAS référencé.

Le paquet Microsoft.Web.Infrastructure a été installé dans le dossier des paquets de ma solution. Au lieu d'utiliser NuGet pour ajouter le paquetage, j'ai simplement utilisé l'option Ajouter une référence. Dans la partie gauche de la fenêtre pop-up, j'ai choisi Browse, puis j'ai appuyé sur le bouton Browse en bas de la fenêtre. J'ai navigué jusqu'au dossier des paquets sous le dossier dans lequel se trouvait ma solution, puis je suis descendu jusqu'au ... \mysolution\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40 et a cliqué sur le fichier Microsoft.Web.Infrastructure.dll. Après avoir cliqué sur OK, le paquet 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é.

9voto

BenW Points 916

Pourquoi ne pas copier manuellement le fichier Microsoft.Web.Infrastructure.dll dans le dossier BIN du serveur. Cela fonctionne pour. Mon projet est un site Web VS2010.

Ce fichier peut être localisé :

C:\Program Fichiers (x86) \Microsoft ASP.NET \ASP.NET MVC 4 \Packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40

Il suffit de le copier et de le coller dans le dossier BIN.

Vous devez probablement inclure ceci dans le web.config si ce n'est pas déjà fait.

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </assemblies>
</compilation>

Référence : http://thedeveloperblog.com/

6voto

Șhȇkhaṝ Points 9242

J'ai trouvé le problème. Au lieu d'ajouter une classe (.cs) par erreur, j'avais ajouté un Web API Controller qui a ajouté 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 et ensuite publié.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X