Der 'System.ServiceModel.Activation.HttpHandler' Versionskonflikt mit WCF REST konnte nicht geladen werden

8

Ich habe ein Problem mit dem WCF-REST-Service festgestellt. Ich bekomme:

Der Typ 'System.ServiceModel.Activation.HttpHandler' konnte nicht vom Assembly 'System.ServiceModel, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' geladen werden.

beim Ausführen innerhalb des IIS in einem ASP.NET 4.0-AppPool.

Das Problem scheint nur aufzutreten, wenn:

  • Ausführung in IIS
  • Wenn ASP.NET-Kompatibilität aktiviert ist

In Cassini läuft - kein Problem, es funktioniert einwandfrei. Laufen mit ASP.NET-Kompatibilität aus - kein Problem, es funktioniert.

Es sieht so aus, als ob es sich um einen Konflikt in der Handlerversion handelt, bei dem versucht wird, die falsche Version des Handlers zu instanziieren, die wiederum versucht, eine ältere Version von System.ServiceModel zu laden, aber das konnte ich nicht aufspüren. p>

Hat jemand schon einmal so etwas gesehen und hat Ideen, wie man das weiter verfolgen kann?

Ich habe in ApplicationHost.config und den Master-Dateien web.config nach System.ServiceModel und HttpHandler Referenzen gesucht, aber kein Glück. Dort.

+++ Rick ---

    
Rick Strahl 06.01.2011, 21:27
quelle

3 Antworten

11

Starten Sie Ihre Visual Studio 2010-Eingabeaufforderung, oder navigieren Sie zu "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319". Führen Sie an der Eingabeaufforderung den folgenden Befehl aus:

aspnet_regiis.exe -iru

Hiermit wird die neueste .net-Version registriert. Stellen Sie außerdem sicher, dass in Ihrem App-Pool die neueste Version von .net ausgeführt wird.

    
Sriwantha Attanayake 08.11.2011 17:25
quelle
8

Wie erwartet, war dies ein Versionskonflikt in den Standardhandlerzuordnungen in ApplicationHost.config. Insbesondere weist IIS Zuordnungen für ASP.NET 2.0- und ASP.NET 4.0-spezifische Verweise auf den Serviceaktivierungshandler (und das Modul) auf, und die 2.0-Verweise waren nicht durch eine versionsspezifische Vorbedingung eingeschränkt.

Um das obige Problem zu beheben, musste ich ändern (am System root in ApplicationHost.config):

%Vor%

zu:

%Vor%

Beachten Sie die EXPLICIT runtimeVersion2.0. Es gibt zusätzliche * .svc-Maps im selben Abschnitt für die runtimeVersion4.0, die dann die entsprechenden Laufzeiten auslösen.

Laut Microsoft kann diese Situation entstehen, wenn einige ältere Tools (ich vermute Azure-Tools) installiert sind, die die Laufzeitversion nicht korrekt registrieren.

Problem gelöst.

    
Rick Strahl 06.01.2011 22:37
quelle
5

Es gibt einen weiteren Weg, wenn alles oben nicht funktioniert. (Seltsam)

Wir haben Windows Server 2008 R2 SP1 mit IIS 7.5.7600

verwendet

Nach der Registrierung des letzten Frameworks wie in der obigen Antwort angegeben,

Sie müssen die Add-Handler-Zuordnung zur v.4.0-Assembly manuell in web.config einfügen und "ServiceModel" aus den Modulen entfernen.

%Vor%

Weitere hier

    
Amitd 05.07.2016 12:13
quelle

Tags und Links