J'ai créé un projet Web et il fonctionne bien dans Visual Studio. Cependant, j'ai eu l'erreur suivante après l'avoir publié sur azurewebsites. Qu'est-ce qui peut causer le problème?
Impossible de charger le fichier ou l'assembly 'System.Web.Http.WebHost, Version = 5.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)
Description: une exception non gérée s'est produite lors de l'exécution de la requête Web actuelle. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.
Détails de l'exception: System.IO.FileLoadException: impossible de charger le fichier ou l'assembly 'System.Web.Http.WebHost, Version = 5.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)
Erreur source:
Une exception non gérée a été générée lors de l'exécution de la requête Web actuelle. Les informations concernant l'origine et l'emplacement de l'exception peuvent être identifiées à l'aide de la trace de pile d'exceptions ci-dessous.
Suivi du chargement de l'assembly: les informations suivantes peuvent être utiles pour déterminer pourquoi l'assembly 'System.Web.Http.WebHost, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' n'a pas pu être chargé.
WRN: la journalisation de la liaison d'assemblage est désactivée. Pour activer la journalisation des échecs de liaison d'assembly, définissez la valeur de Registre [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) sur 1. Remarque: Il existe une pénalité de performances associée à la journalisation des échecs de liaison d'assembly. Pour désactiver cette fonctionnalité, supprimez la valeur de registre [HKLM \ Software \ Microsoft \ Fusion! EnableLog].
Ce qui suit fait partie du fichier web.config.
<system.web>
<customErrors mode="Off"/>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers></system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Copy Local
est déjà vrai. Étrangement, il montre laRuntime Version
v4.0.30319 au lieu de la v5?Si vous cherchez toujours une réponse, essayez de vérifier ce fil de questions . Cela m'a aidé à résoudre un problème similaire.
edit: La solution qui m'a aidé a été d'exécuter à
Update-Package Microsoft.AspNet.WebApi -reinstall
partir du gestionnaire de paquets NugGet, comme suggéré par Pathoschild. J'ai ensuite dû supprimer mon fichier .suo et redémarrer VS, comme suggéré par Sergey Osypchuk dans ce fil .la source
J'ai rencontré le même problème et je l'ai résolu en définissant
CopyLocal
sur true pour les bibliothèques suivantes:Je dois ajouter que j'utilise MVC4 et NET 4
la source
Pour moi, j'ai ajouté la section suivante au
web.config
fichier:Cet exemple représente MVC 5.1. J'espère que cela aidera quelqu'un à résoudre ce problème.
la source
Microsoft.AspNet.WebApi.WebHost
package via nuget.Pour moi, cela a commencé à fonctionner après avoir sélectionné "Supprimer les fichiers supplémentaires à destination" dans les options de publication de fichier sous les paramètres de la boîte de dialogue de publication.
la source
La dll est manquante dans la publication (environnement déployé). C'est la raison pour laquelle il fonctionne dans le local, c'est-à-dire Visual Studio, mais pas dans l'environnement de site Web Azure.
Faites simplement Copy Local = true dans les propriétés de l'assembly (System.Web.Http.WebHost), puis effectuez un redéploiement, cela devrait fonctionner correctement.
la source
J'utilise vs2012 et je pense que la mise à jour KB2781514 a changé certains paramètres. Tout mon System.Web.Http dans mon projet MVC4 a changé en faux et je garde reçu ce message. J'avais changé la
All file in this project
propriété de publication mais cela ne fonctionne pas. Enfin, je dois changerCopy Local = true
un par un et résoudre ce problème.la source
J'ai eu la même erreur et j'ai changé ma version de 4 à 3 et c'est résolu:
la source
J'ai eu le même problème dans ma candidature.
Il vous suffit de copier le
system.web.http.webhost
fichier de votre projet principal que vous exécutez dans Visual Studio et de le coller dans votrebin
répertoire de projet publié .Après cela, il peut afficher la même erreur, mais le nom du répertoire est modifié
system.web.http
. Suivez la même procédure que ci-dessus. Cela fonctionnera une fois tous les fichiers téléchargés. Cela en raison du package nuget dans Visual Studio, ils téléchargent à partir d'Internet, mais sur le serveur, il ne peut pas le télécharger.Vous pouvez trouver ce fichier dans le répertoire de votre projet
bin
.la source
Cela m'est arrivé sur VS2013 (mise à jour 5) /ASP.NET 4.5, sous le type de projet "Application Web" qui comprend MVC et Web API 2. Une erreur s'est produite juste après la création du projet et avant d'ajouter du code. L'ajout de la configuration suivante corrige le problème pour moi. Après avoir résolu le problème "System.Web.Helpers", deux autres erreurs similaires sont apparues pour "System.Web.Mvc" et "System.Web.WebPages".
la source
Il me manquait plusieurs DLL. Même si je les copiais manuellement dans le répertoire la prochaine fois que je les publierais, ils disparaîtraient. Chacun d'eux était déjà configuré pour copier localement dans VS. Le correctif pour moi était de définir chacun sur Copier localement false, d'enregistrer, de construire puis de définir chacun d'eux pour copier localement true. Cette fois, j'ai publié toutes les DLL correctement publiées. Étrange
la source
Si vous avez plusieurs projets dans votre solution et que l'un de vos projets ne parvient pas à se créer en raison de cette erreur, assurez-vous d'avoir installé le package nuget WebApi Core dans ce projet. Le simple fait d'ajouter une référence à System.Web.Http n'aide pas, vous devez installer le package nuget correct dans ce projet.
J'avais plusieurs projets dans ma solution et WebApi Core était déjà installé dans un autre projet. J'ai référencé l'assembly System.Web.Http en cliquant avec le bouton droit de la souris et en cochant l'assembly dans la liste et cela ne fonctionnait pas sur Azure, bien que localement, cela se construise correctement. J'ai dû supprimer la référence manuelle et ajouter le package nuget WebApi Core à chaque projet nécessitant la référence d'assemblage.
la source
Dans le cas où "Copier Local" est déjà True, je trouve que cela fonctionne parfois si vous supprimez les fichiers sur lesquels il a été publié et publiez à nouveau.
Par exemple, si vous utilisez IIS, supprimez les sites Web et le contenu du répertoire dans lequel ils sont publiés, puis publiez à nouveau.
Il peut y avoir des versions plus anciennes des fichiers à la destination, donc pour vous assurer que vous n'utilisez pas d'anciennes versions, supprimez tout avant de publier à nouveau.
la source
J'ai supprimé l'entrée suivante de web.config et cela a fonctionné pour moi.
la source
Assurez-vous que la version du package est la même dans toute la solution. Je viens de rétrograder et de mettre à niveau le
Microsoft.AspNet.Mvc
package de la solution et le problème est résolu.la source