web-dev-qa-db-fra.com

Problèmes de dépendance de déploiement MVC3

Je viens d'essayer de déployer une application MVC3 dans notre environnement d'hébergement IIS7, mais on me présente l'exception suivante:

Impossible de charger le type "Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility" à partir de l'assembly "Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35". Description: une exception non gérée s'est produite lors de l'exécution de la demande Web en cours. 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.TypeLoadException: impossible de charger le type "Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility" de l'assembly "Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35".

Aucune suggestion?

L'application n'est pas déployée car j'ai installé des pages Web ASP.Net et MVC3 sur le serveur Web lui-même.

28
Phil.Wheeler

Ceci est dû au fait Microsoft.Web.Infrastructure n'est pas dans votre GAC. Vous devez ajouter cette référence à votre projet. Cliquez avec le bouton droit sur la référence et accédez aux propriétés, puis définissez la copie sur local sur true.

Copy Local

Sortie (ignorer le Ninject et le NCU):

alt text

50
Shawn Mclean

Il s'avère qu'après avoir fait un nettoyage de référence, il a supprimé Microsoft.Web.Infrastructure, mais pas du fichier packages.config. Après avoir essayé de l'ajouter à nouveau en utilisant le Package Manager Console, Visual Studio indique qu'il est déjà installé, ce qui est faux car il a été supprimé.

J'ai ensuite supprimé la ligne de code dans le packages.config fichier

<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />

et a exécuté à nouveau la commande

PM> Install-Package Microsoft.Web.Infrastructure

Après cela, maintenant cela fonctionne bien.

9
riaandl

Microsoft.Web.Infrastructure est maintenant un package Nuget, et il peut être ajouté à votre projet pour permettre les déploiements de répertoires bin -

http://nuget.org/packages/Microsoft.Web.Infrastructure

5
Jason

Assurez-vous que le fichier racine web.config sur votre serveur (situé quelque part comme ici: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config) a l'entrée suivante:

<configuration>
  <location allowOverride="true">
    <system.web>
      <fullTrustAssemblies>
        <add
          assemblyName="Microsoft.Web.Infrastructure"
          version="1.0.0.0"
          publicKey="[bunch of letters and numbers]"
        />

S'il est manquant, cela signifie que quelqu'un a gâché votre installation de .NET 4.

2
marcind

téléchargez Microsoft.Web.Infrastructure.dll et copiez-le dans votre dossier bin!

0
javidasd