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

Ho una piccola applicazione web. Che funzionava bene fino a quando ho aggiunto due genericHandler nella mia applicazione.

Ho apportato le seguenti modifiche al gestore HTTP

                            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. 

Sto usando asp.net4.0 e C #. Non sto usando MVC
Sull’host locale sta funzionando bene.
Ma quando sto ospitando il codice pubblicato mi sta dando l’errore sopra riportato.

Stack Trace: –

[FileNotFoundException: imansible caricare il file o l’assembly “Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35” o una delle sue dipendenze. Il sistema non riesce a trovare il file specificato.] System.Web.Http.WebHost.SuppressFormsAuthRedirectModule.Register () +0

[InvalidOperationException: il metodo di inizializzazione iniziale dell’applicazione prima dell’applicazione Start on type System.Web.Http.WebHost.PreApplicationStartCode ha generato un’eccezione con il seguente messaggio di errore: Imansible caricare il file o l’assembly ‘Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 ‘o una delle sue dipendenze. Il sistema non riesce a trovare il file specificato.] System.Web.Compilation.BuildManager.InvokePreStartInitMethods (metodi ICollection`1) +11708830 System.Web.Compilation.BuildManager.CallPreStartInitMethods () +465 System.Web.Hosting.HostingEnvironment.Initialize ( ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLeve

[HttpException (0x80004005): il metodo di inizializzazione di avvio dell’applicazione precedente Il tipo di avvio System.Web.Http.WebHost.PreApplicationStartCode ha generato un’eccezione con il seguente messaggio di errore: Imansible caricare il file o l’assembly ‘Microsoft.Web.Infrastructure, Version = 1.0 .0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 ‘o una delle sue dipendenze. Il sistema non riesce a trovare il file specificato.] System.Web.HttpRuntime.FirstRequestInit (contesto HttpContext) +11697760 System.Web.HttpRuntime.EnsureFirstRequestInit (contesto HttpContext) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr, contesto HttpContext) +4866485

Sembra che Microsoft.Web.Infrastructure.dll non sia installato nel GAC, anche se .net (4.0 o 4.5 o altro) sono installati correttamente su Windows Server. Su localhost (tipicamente client Windows), sembra che si trovi nella GAC ​​quando vengono installati gli strumenti / la piattaforma (Visual Studio ecc.).

Come una ansible correzione, prova quanto segue:

  1. Eseguire il seguente comando nella console di Gestione pacchetti. (Se si utilizza Visual Studio, è ansible raggiungerlo tramite le opzioni di menu “Strumenti -> Gestore pacchetti libreria -> Console Gestione pacchetti 🙂

     PM> Install-Package Microsoft.Web.Infrastructure 

    Vedrai i seguenti messaggi se è stato installato con successo.

     Successfully installed 'Microsoft.Web.Infrastructure 1.0.0.0'. Successfully added 'Microsoft.Web.Infrastructure 1.0.0.0' to Web. 
  2. Si noterà che Microsoft.Web.Infrastructure.dll è stato ora aggiunto come riferimento (può essere visto nella cartella dei riferimenti del progetto in Solution Explorer)

  3. Se si guardano le proprietà di questo riferimento, si noterà che ” Copia locale ” è stato impostato su ” Vero ” per impostazione predefinita.

  4. Ora quando si “Pubblica” il progetto, verrà distribuito Microsoft.Web.Infrastructure.dll .

Ho installato MVC4 tramite WPI e mi ha aiutato.

Ho avuto lo stesso problema. Quando ho provato la risposta accettata (rockyb), ho ricevuto il messaggio che il pacchetto era già installato e assegnato al mio progetto. Quando ho controllato la lista dei riferimenti, NON era referenziato, comunque.

Microsoft.Web.Infrastructure è stato installato nella cartella dei pacchetti della mia soluzione. Invece di usare NuGet per aggiungere il pacchetto, ho semplicemente usato l’opzione Aggiungi riferimento. Sul lato sinistro della finestra a comparsa, ho scelto Sfoglia, quindi ho premuto il pulsante Sfoglia nella parte inferiore della finestra. Ho navigato nella cartella dei pacchetti sotto la cartella in cui si trovava la mia soluzione, quindi ho eseguito il drill-down su … \ mysolution \ packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 e ho fatto clic su Microsoft.Web.Infrastructure .dll. Dopo aver fatto clic su OK, il pacchetto è comparso nell’elenco delle mie referenze. Ho usato l’opzione Web Deploy Package per distribuire il mio sito Web e tutto ha funzionato.

Ho trovato il problema. Invece di aggiungere un file di class (.cs) per errore, avevo aggiunto una class Web API Controller che ha aggiunto un file di configurazione nella mia soluzione. E quel file di configurazione stava cercando la DLL citata (Microsoft.Web.Infrastructure 1.0.0.0). Ha funzionato quando ho rimosso quel file, pulito l’applicazione e poi pubblicato.

Perché non copiare manualmente il file Microsoft.Web.Infrastructure.dll nella cartella BIN del server. Questo funziona per. Il mio progetto è VS2010 Website.

Questo file può essere localizzato:

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

Basta copiarlo e incollarlo nella cartella BIN.

Probabilmente devi includerlo nel web.config se non lo hai già

      

Riferimento: http://thedeveloperblog.com/

Dopo aver installato Microsoft.Web.Infrastructure tramite Nuget-Package Manager

 PM> Install-Package Microsoft.Web.Infrastructure 

Copiare manualmente Microsoft.Web.Infrastructure.dll dalla cartella Nuget-Package sulla propria applicazione Web e quindi incollarlo nella cartella bin della propria applicazione Web distribuita sul server Web.

pacchetti \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 \ Microsoft.Web.Infrastructure.dll

Ha funzionato per me.

Update-Package -reinstall Microsoft.Web.Infrastructure non ha funzionato per me, poiché continuavo a ricevere errori che era già installato.

Dovevo navigare nella cartella Microsoft.Web.Infrastructure.1.0.0.0 nella cartella dei pacchetti e cancellare manualmente quella cartella.

Dopo aver eseguito questa operazione, esegue il Install-Package Microsoft.Web.Infrastructure installazione Install-Package Microsoft.Web.Infrastructure installato.

Nota: CopyLocal stato impostato automaticamente su true.

Ho avuto lo stesso problema e “Microsoft.Web.Infrastructure.dll” sembrava mancare. Ho provato pochi consigli e installato MVC`s ecc. E nulla ha aiutato. La soluzione era installare “Web Services Enhancements (WSE) 1.0 SP1 per Microsoft .NET” che include Microsoft.Web.Infrastructure.dll. Disponibile all’indirizzo: http://www.microsoft.com/en-gb/download/details.aspx?id=4065

Ho avuto lo stesso problema. Ho provato a installare Visual Studio 2010 SP1 ma non ha funzionato.

Finalmente ottengo Microsoft.Web.Infrastructure.dll dal collega. Puoi trovare la DLL nel PC degli amici in cui il progetto funziona perfettamente. Prova a cercare dll in Temp / Temporary ASP.NET Files. Vai a Temp usando% temp% nella finestra di esecuzione.

Dopo aver scaricato dll nel tuo PC, aggiungi solo un riferimento al tuo progetto e funzionerà.

La ripubblicazione del sito ha risolto il problema per me.

Stava affrontando lo stesso problema e, purtroppo, nulla qui funzionava. Infine, ho trovato questo link: https://blogs.msdn.microsoft.com/jjameson/2009/11/18/the-copy-local-bug-in-visual-studio/

Si scopre che la soluzione è un po ‘stupida: imposta copy-local per microsoft.web.infrastructure dll su False, quindi reimpostalo su True.

A proposito, penso che ciò che sta accadendo è che ci sono due versioni della dll microsoft.web.infrastructure, una che è preinstallata nella GAC, e un’altra che ora è un pacchetto nuget. Penso che uno stia mascherando l’altro, quindi causando problemi. Nel mio caso particolare, sul mio build server, ne ho bisogno per essere copiato su una cartella (questa cartella viene quindi compressa e spedita alla distribuzione). Immagino che il sistema abbia una copia locale e abbia pensato “nah, andrà tutto bene”

Ho un sito solo per i file. Aggiunto MVC 5 all’applicazione Webforms (targeting net45). Ho dovuto modificare il file packages.config

 package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" 

a

 package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" developmentDependency="true" 

in modo che si avvii sulla casella locale in modalità di debug (in precedenza aveva l’errore descritto in alto). Esecuzione di VS 2017 su Windows 7 … aperto tramite File> Apri> Sito Web> File (scelto la directory root al di fuori di IIS).