2012-09-02 11 views
6

Forse Informazioni rilevanti: Ho un'applicazione Web che ho creato con .net 4.5. Volevo eseguire il deploy sui siti Web di Azure ma supporta solo .net 4.0, quindi ho eseguito il downgrade del progetto su .net 4.0. Funziona ancora quando viene eseguito localmente.Impossibile caricare il file o l'assembly 'System.Net.Http' o una delle sue dipendenze

Quando pubblico ad Azure, ottengo questo errore:

Could not load file or assembly 'System.Net.Http' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Ho provato a rimuovere l'API Web con NuGet e readding, come un'altra domanda su SO suggerito, ma ho ancora lo stesso problema.
Ho provato chiudere/aprire VS e pulire/compilare.

+0

Si lamenta una mancata corrispondenza [AssemblyVersion]. System.Net.Http è supportato solo per .NET 4.5, quindi dovrebbe essere parte del problema. –

+0

@HansPassant Sembra aggiungere automaticamente se aggiungo API Web al mio progetto, che è supposto da .net 4.0, giusto? E sembra funzionare bene localmente ... Non so come farlo funzionare su Azure. – Kyle

+0

Che ne dici di fare clic con il tasto destro del mouse sui riferimenti aggiunti da nuget, scegliendo le proprietà e impostando "copia locale" vero? – spender

risposta

0

System.NET.HTTP.dll dipende solo da System.dll, System.Core.dll e mscorlib.dll.

Assicurarsi di avere questa DLL (System.NET.HTTP.dll) nel pacchetto di distribuzione (è possibile eseguire la connessione RDP e controllare la cartella di distribuzione). Gioca con la proprietà di riferimento "Copia in locale" o includi questa dll nel tuo progetto a livello di root e imposta il tipo "contenuto" nelle proprietà.

Anche System.Net.Http.dll è supportato anche per .NET 2.0 come vedo - questo potrebbe causare un problema. Quindi, in aggiunta a sopra, provare a set proprietà di riferimento "Versione specifica" = true

3

Ho risolto un problema simile (System.Web.Http e System.Net.Http.Formatting) errore rimuovendo il riferimento al riferimento del problema (che è stato indirizzato alla mia cartella di installazione .Net) e la sostituisco con il file di riferimento nella mia cartella dei pacchetti che è stata installata dal pacchetto Microsoft.AspNet.WebApi NuGet.

+0

Ho trovato la dipendenza mancante ('System.Net.Http.Formatting') in' .. \ packages \ Microsoft.AspNet.WebApi.Client.5.2.3 \ lib \ net45 \ System.Net.Http.Formatting.dll' . –

0

Azure Now supporta .Net 4.5 nella scheda di configurazione che è possibile selezionare. Versione di framework V3.5 o V4.5 Ho diverse MVC Web App con numerose DLL di supporto tutte compilate in V4.5. Ciò che Azure non supporta è V 4.5.1 (dalla versione RC di VS 2013).

2

Ho avuto lo stesso problema. Tuttavia, l'aggiornamento delle versioni dell'assieme, della copia locale e delle impostazioni specifiche della versione non ha risolto il mio problema. Nella configurazione dell'applicazione, distribuisco un ruolo Web e un ruolo di lavoro in un servizio cloud. Dopo aver creato il servizio, nella scheda di configurazione ho impostato il sistema operativo su Windows Server 2012 R2 per ottenere il supporto per .Net Framework 4.5.1. Ma l'errore si è verificato ancora.

Dopo ulteriori ricerche, ho trovato che il file * .cscfg per il mio servizio cloud ha annullato l'impostazione del portale con un'oscura impostazione osFamily di "3". Quando ho iniziato il mio progetto era su MVC3 e non avevo ancora WebAPI e framework 4.5.1. osFamily 3 era l'ultima all'epoca.

Nella mia ultima implementazione avevo aggiornato il mio sito a 4.5.1 framework e MVC5. Ho verificato che funzionava localmente sulla mia macchina di sviluppo. Ma non ha funzionato dopo la distribuzione con l'errore che fa riferimento a System.Net.Http.Formatting versione 4.0.0.0 non trovata. In seguito ho visto il log di implementazione che mostrava l'errore di origine

"La funzionalità denominata NetFx451 richiesta dal pacchetto caricato non è disponibile nel sistema operativo * scelto per la distribuzione."

Ecco l'articolo del blog che mi ha portato alla soluzione per cambiare l'impostazione di osFamily su 4. Quindi il mio sito ha funzionato dopo una nuova implementazione.

http://tech.trailmax.info/2014/02/azure-deployment-the-feature-named-netfx451-that-is-required-by-the-uploaded-package-is-not-available-in-the-os-chosen-for-the-deployment/

Problemi correlati