2012-09-02 3 views
6

Vielleicht Relevante Informationen: Ich habe eine Webanwendung, die ich mit .net 4.5 erstellt habe. Ich wollte auf den Azure-Websites bereitstellen, aber es unterstützt nur .NET 4.0, also habe ich das Projekt auf .net 4.0 heruntergestuft. Es funktioniert immer noch, wenn es lokal ausgeführt wird.Die Datei 'System.Net.Http' oder eine ihrer Abhängigkeiten konnte nicht geladen werden

Als ich zu Azure veröffentlichen, erhalte ich diesen Fehler:

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)

Ich habe versucht, den Web-API mit nuget entfernen und readding es, als eine andere Frage auf SO vorgeschlagen, aber ich habe immer noch das gleiche Problem.
Ich habe versucht, VS zu schließen/zu öffnen und zu reinigen/zu bauen.

+0

Es beschwert sich über eine [AssemblyVersion] Mismatch. System.Net.Http wird nur für .NET 4.5 unterstützt, so dass dies ein Teil des Problems sein sollte. –

+0

@HansPassant Es scheint automatisch hinzuzufügen, wenn ich Web-API zu meinem Projekt hinzufügen, die von .net 4.0 angenommen wird, richtig? Und es scheint lokal gut zu laufen ... Ich bin mir nicht sicher, wie ich das auf Azure ausführen kann. – Kyle

+0

Wie wäre es mit der rechten Maustaste auf die Referenz (n) von Nuget hinzugefügt, Eigenschaften auswählen und Einstellung "Kopie lokal" wahr? – spender

Antwort

0

System.NET.HTTP.dll hängt nur von System.dll, System.Core.dll und mscorlib.dll.

Stellen Sie sicher, dass diese DLL (System.NET.HTTP.dll) in Ihrem Implementierungspaket vorhanden ist (Sie können RDP-Verbindungen herstellen und den Bereitstellungsordner überprüfen). Spielen Sie mit der Eigenschaft "Copy to Local" der Referenz oder enthalten Sie diese DLL in Ihrem Projekt auf Root-Ebene und setzen Sie den Typ "content" in den Eigenschaften.

Auch System.Net.Http.dll wird auch für .NET 2.0 unterstützt, wie ich sehe - das könnte ein Problem verursachen. Also zusätzlich zu oben versuchen zu Satz Eigenschaft reference „Specific Version“ = true

3

Ich löste ein ähnliches Problem (System.Web.Http und System.Net.Http.Formatting) Fehler durch den Verweis auf Problemreferenz Entfernen (die auf meinen .Net-Installationsordner verwiesen wurde) und ersetzte sie durch die Referenzdatei in meinem Paketordner, der vom Microsoft.AspNet.WebApi NuGet-Paket installiert wurde.

+0

Ich habe die fehlende Abhängigkeit ('System.Net.Http.Formatting') in' .. \ packages \ Microsoft.AspNet.WebApi.Client.5.2.3 \ lib \ net45 \ System.Net.Http.Formatting.dll' gefunden . –

0

Azure Jetzt unterstützt. NET 4.5 auf der Registerkarte Konfiguration können Sie auswählen. NET Framework Version V3.5 oder V4.5 Ich habe mehrere MVC Web Apps mit zahlreichen unterstützenden DLLs alle alle in V4.5 kompiliert. Was Azure nicht unterstützt, ist V 4.5.1 (ab der Version VS 2013 RC).

2

Ich hatte das gleiche Problem. Das Aktualisieren der Assembly-Versionen, das Kopieren lokaler und bestimmter Versionseinstellungen allein hat mein Problem jedoch nicht gelöst. In meiner Anwendungskonfiguration stelle ich eine Web- und eine Worker-Rolle für einen Cloud-Service bereit. Nachdem ich den Dienst erstellt habe, setze ich auf der Registerkarte "Konfiguration" das Betriebssystem auf Windows Server 2012 R2, um die Unterstützung für .Net Framework 4.5.1 zu erhalten. Aber der Fehler ist immer noch aufgetreten.

Bei weiteren Nachforschungen stellte ich fest, dass die * .cscfg-Datei für meinen Cloud-Dienst die Portaleinstellung mit einer obskuren osFamily-Einstellung von "3" überschrieb. Als ich mein Projekt startete, war es auf MVC3 und hatte noch kein WebAPI und Framework 4.5.1. osFamily 3 war das neueste zu der Zeit.

In meiner neuesten Bereitstellung hatte ich meine Website auf 4.5.1 Framework und MVC5 aktualisiert. Ich habe festgestellt, dass es lokal auf meiner Entwicklungsmaschine funktioniert hat. Aber es funktionierte nicht nach der Bereitstellung mit der Fehler Referenzierung System.Net.Http.Formatting Version 4.0.0.0 nicht gefunden. Ich habe später das Bereitstellungsprotokoll mit dem Quellfehler

gesehen. "Das vom hochgeladenen Paket benötigte Feature namens NetFx451 ist im für die Bereitstellung ausgewählten Betriebssystem * nicht verfügbar."

Hier ist der Blog-Artikel, der mich zu der Lösung führte, um die osFamily-Einstellung auf 4 zu ändern. Dann funktionierte meine Website nach einer neuen Bereitstellung.

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/

Verwandte Themen