Impossibile caricare il file o l'assembly "System.Web.Mvc"


200

La mia nuova applicazione Web ASP.NET MVC funziona sulla mia workstation di sviluppo, ma non funziona sul mio server Web ...


Errore del server nell'applicazione '/'


Errore di configurazione

Descrizione: si è verificato un errore durante l'elaborazione di un file di configurazione necessario per soddisfare questa richiesta. Esamina i dettagli dell'errore specifico di seguito e modifica il file di configurazione in modo appropriato.

Messaggio di errore del parser: Impossibile caricare il file o l'assembly 'System.Web.Mvc, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' o una delle sue dipendenze. Il sistema non trova il file specificato.

Errore sorgente:

Line 44:         <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 45:         <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 46:         <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 47:         <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Line 48:         <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

File di origine: C: \ inetpub \ www.example.org \ web.config Riga: 46

Traccia di caricamento dell'assembly: Le seguenti informazioni possono essere utili per determinare perché non è stato possibile caricare l'assembly 'System.Web.Mvc, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'.

WRN: la registrazione dell'associazione dell'assieme è disattivata.
Per abilitare la registrazione degli errori di bind assembly, impostare il valore del registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) su 1.
Nota: è prevista una penalità per le prestazioni associata alla registrazione degli errori di associazione dell'assembly.
Per disattivare questa funzione, rimuovere il valore di registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Informazioni sulla versione: Versione di Microsoft .NET Framework: 2.0.50727.3053; Versione ASP.NET: 2.0.50727.3053


Devo installare AspNetMVCBeta-setup.msi sul server? O esiste un programma di installazione diverso per i server?

inserisci qui la descrizione dell'immagine

Risposte:


215

Ho appena scritto un post sul blog che parla di questo. Puoi installare ASP.NET MVC sul tuo server O puoi seguire i passaggi qui .


EDIT: (di jcolebrand) Ho seguito questo link, quindi ho avuto lo stesso problema di Victor in basso , quindi ti suggerisco di aggiungere anche questi:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor

6
Nota: quando hai installato MVC4 (beta attualmente), vorrai prendere v1.0 di quelle DLL, vorrai anche prendere System.Web.Helpers (almeno necessario).
Tracker 1

1
-1 Il tuo post a cui ti colleghi, non spiega come ottenere l'infrastruttura Microsoft.Web. sul server Web tramite il meccanismo di pubblicazione. Dover installare le cose direttamente su un server, tipo di sux.
Mark Rogers,

1
con Visual Studio 2010 questo è diventato molto più semplice, come spiegato qui: britishdeveloper.co.uk/2011/06/…
Daniël Tulp,

o qui se non si utilizza Web Deploy britishdeveloper.co.uk/2011/05/…
Jeroen K

Ho dovuto eseguire il tubo flessibile della cartella bin e quindi pubblicare nuovamente, ovvero se non si utilizza Distribuisci pacchetto.
Robert Koch,

41

Ho riscontrato lo stesso problema di sgriffinusa. Oltre ai riferimenti l'articolo di Phil suggerisce: http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx . Ho aggiunto questi:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor

Godaddy Deployment ha funzionato perfettamente. Disattiva gli errori personalizzati e aggiungi riferimenti per correggere gli errori. Questo dovrebbe condurti nella giusta direzione.


26

L'installazione di MVC direttamente sul server Web è un'opzione, in quanto gli assembly verranno installati nel GAC. È inoltre possibile distribuire in bin gli assembly, il che potrebbe aiutare a mantenere il server libero dagli assembly pre-release fino a quando non è disponibile una versione finale.

Phil Haack ha pubblicato un bell'articolo un paio di giorni fa su come distribuire MVC insieme alla tua app, quindi non è necessario installarlo direttamente:

http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx


25

Ho riscontrato questo stesso problema nel tentativo di distribuire la mia applicazione Web Razor MVC3 sull'hosting condiviso GoDaddy. Ci sono alcuni dll aggiuntivi che devono essere referenziati. Dettagli qui: http://paulmason.biz/?p=108

Fondamentalmente è necessario aggiungere riferimenti a quanto segue oltre a quelli elencati nel post di @ Haacked e impostarli per la distribuzione locale come descritto.

  • Microsoft.Web.Infrastructure
  • System.Web.Razor
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor

Grazie amico, dopo aver aggiunto manualmente il riferimento e poi distribuito localmente, ha risolto il problema per MVC3!
Stefanvds

Stessa cosa qui. Buona guida per l'aggiunta di quelle DLL aggiuntive. Grazie!
Mike L,

Stessa cosa qui. Non su GoDaddy ma sul mio server aziendale, quindi questo deve essere un semplice caso generel.
TJKjaer,

13

In VS2010, fare clic con il tasto destro del mouse su Esplora soluzioni e selezionare "Aggiungi dipendenze distribuibili". Quindi selezionare le caselle di controllo relative a MVC nella finestra di dialogo seguente.

Ciò crea una cartella "_bin_deployableAssemblies" nel progetto che contiene tutti i file DLL indicati in altre risposte. Credo che questi vengano copiati nella cartella bin durante la creazione di un pacchetto di distribuzione.


9

Soluzione semplice. In VS2010, fai clic con il pulsante destro del mouse sul progetto MVC, seleziona "Aggiungi dipendenze distribuibili ...", seleziona le opzioni desiderate e fai clic su OK


8

Soluzione rapida e semplice: ho riscontrato questo problema con Microsoft.AspNet.Mvc -Version 5.2.3 e dopo aver esaminato tutti questi thread ho trovato la soluzione più semplice.

Segui i passaggi:

  1. Apri Gestione pacchetti NuGet in Visual Studio per il tuo progetto
  2. Cerca Microsoft.AspNet.Mvc
  3. Se trovato, modifica l'azione in Disinstalla e Disinstalla
  4. Una volta fatto, installalo di nuovo e provalo ora

Ciò risolverà automaticamente tutti i problemi con i riferimenti. Vedi l'immagine sotto:

inserisci qui la descrizione dell'immagine


7

Aveva lo stesso problema e ha aggiunto tutto l'assemblaggio che hanno detto, ma ha comunque ottenuto lo stesso errore.

risulta che è necessario rendere la " Versione specifica " = Falso.

La versione specifica dovrebbe essere falsa.


In alternativa, è necessario impostare "Copia locale" su "Vero" se non è abilitato,
Più tardi

6

Vogliamo aggiungerlo perché stiamo creando una libreria di classi che lo utilizza.

Per me è qui ...

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies



3

Oltre al posto di Haack, Hanselman ha anche un posto simile. BIN Utilizzo di ASP.NET MVC 3 con Razor su un server Windows senza MVC installato

Per me, la soluzione "Copia locale = vero" era insufficiente perché i riferimenti al progetto del mio sito Web non includevano tutte le DLL mancanti. Come menziona Scott nel suo post, ho anche bisogno di ottenere ulteriori dll dalla mia cartella sulla mia casella di sviluppo: C: \ Programmi (x86) \ Microsoft ASP.NET \ ASP.NET Web Pages \ v1.0 \ Assemblies. Il messaggio di errore mi informava quale DLL mancava (System.Web.Infrastructure, System.Web.Razor, ecc.) Ho continuato ad aggiungere ogni DLL mancante, una per una, fino a quando non ha funzionato.


3

Ho fatto un "Update-Package –reinstall Microsoft.AspNet.Mvc" per risolverlo in Visual Studio 2015.


3

Una considerazione importante è il file web.config, alcuni pacchetti possono manipolare i tuoi reindirizzamenti vincolanti causando il caos (il pacchetto canaglia era nel pacchetto house che non ho rimosso web.config dal pacchetto o assicurandomi che web.config nel pacchetto non ha reindirizzamenti vincolanti, ad esempio rimuovendo il nodo duplicato e errato si risolve questo problema

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>


                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>


                <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

rimuovendo le righe da 8 a 24 corregge la build.


2

Controlla anche la versione dell'assembly in web.config all'interno della cartella Views e assicurati che corrisponda. A volte dimentico che c'è un secondo web.config in quella posizione.



2

Ho avuto lo stesso problema con un mucchio di file di assembly dopo aver spostato il progetto in un'altra soluzione.

Per me, il web.configfile stava provando ad aggiungere questo assembly:

<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Pensato che il riferimento nel progetto puntava verso la versione 3.0.0.0(fare clic sul riferimento e scorrere fino alla fine delle proprietà). Quindi ho appena cambiato la versione di riferimento nel web.configfile.

Non so se questo fosse solo un bug di qualche tipo. Il problema con l'aggiunta di tutti gli altri riferimenti era che i riferimenti apparivano nel file di configurazione ma in realtà non era affatto referenziato nel progetto (all'interno di Esplora soluzioni) e i file necessari non venivano copiati con il resto dei file di progetto, probabilmente a causa del non essere"copy local = true"

Ora, non sono stato in grado di trovare questi assembly negli assembly aggiungibili (facendo clic con il tasto destro del mouse sul riferimento e cercando di aggiungerli dagli assembly o dalle estensioni). Invece ho creato una nuova soluzione MVC che ha aggiunto tutti gli assembly e i riferimenti di cui avevo bisogno, trovandoli nei riferimenti ai nuovi progetti in Esplora soluzioni e trovando il loro percorso nella finestra delle proprietà per il riferimento.

Quindi ho appena copiato le librerie di cui avevo bisogno nell'altro progetto e le ho referenziate.


1

Dopo aver provato tutto e ancora fallito, questa è stata la mia soluzione: mi sono ricordato di aver avuto un errore nell'ultimo aggiornamento della versione MVC nel mio Visual Studio, quindi ho eseguito il progetto da un altro Visual Studio (computer diverso) e poi caricato la DLL e ha funzionato. forse aiuterà qualcuno ...


0

Sto usando Jenkins con i progetti .net e ho avuto problemi con i riferimenti MVC 4.

Ho finalmente risolto il mio problema utilizzando una funzionalità del motore di ricerca di riferimento .Net basata sul registro utilizzando:

"HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ v2.0.50727 \ AssemblyFoldersEx"

Ad esempio, è possibile creare una sottochiave e impostare la chiave predefinita su "c: \ myreferenceedir".

Mi ha salvato con le versioni MVC e anche le pagine Web ASP.net.

Utile per aggiungere riferimenti alla "Finestra di dialogo Aggiungi riferimento"

http://dhakshinamoorthy.wordpress.com/2011/12/04/how-to-register-your-net-assembly-in-gac-and-make-it-show-in-add-reference-dialog/


0

Come altri hanno già detto, aggiungi questi riferimenti agli studi visivi con Copy Localset su true. (Ho anche dovuto aggiungere System.Web.Webpages)

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
System.Web.Webpages

0

Ho aggiunto "Rasoio Microsoft ASP.NET" utilizzando Gestisci pacchetti NuGet.

Con Aggiungi riferimenti, per qualche motivo, avevo solo System.Web.Helpers 1.0.0 e 2.0.0 ... ma non 3.0.0.

Un'altra opzione, che ha funzionato da me, è stata quella di eliminare i riferimenti a System.Web.Mvc e System.Web.Http ... quindi aggiungerli di nuovo brow ai percorsi del pacchetto nel file csproj (puoi facilmente modificare il progetto con un editor di testo):

<Reference Include="System.Web.Http">
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>

<Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.