Alle Anforderungen an die ASP.NET-Web-API geben den Fehler 404 zurück

Ich habe eine ASP.NET MVC 4-Website, die eine Web-API enthält. Die Site wurde mit Visual Studio 2012 und .NET 4.5 unter Windows 8 mit IIS Express als Webserver entwickelt und getestet.In dieser Entwicklungsumgebung funktioniert alles.

Jetzt wird es auf einem Windows 2008 R2 (SP1) -Server mit IIS 7.5 bereitgestellt. .NET 4.0 und 4.5 sind installiert. Der Anwendungspool wird mit .NET 4.0 im integrierten Pipeline-Modus ausgeführt.

In dieser Produktionsumgebung funktioniert die MVC-Website, die Web-API nicht. Für jede Anfrage, egal ob GET oder POST, erhalte ich einen 404-Fehler. Wenn ich nur eine Web-API-URL in den Browser eingebe (IE 9 wurde lokal auf dem Server geöffnet), um eine GET-Anforderung auszuführen, wird eine 404-Seite angezeigt. Wenn ich eine POST-Anfrage von einer Web-API-Client-Anwendung ausstelle, erhalte ich auch eine 404 und die Meldung:

Es wurde keine HTTP-Ressource gefunden, die mit dem Anforderungs-URI übereinstimmt

Ich habe eine Testwebsite mit MVC 4 und Web-API erstellt und auf demselben Server bereitgestellt, und die Web-API funktioniert. Web-API- und MVC-Assemblys haben in beiden Projekten dieselbe Versionsnummer.

Desweiteren habe ich dieWeb API Route Debugger zur Bewerbung. Wenn ich eine gültige Route wiehttp://myserver/api/order/12 Ich erhalte folgendes Ergebnis:

Für mich bedeutet das die richtige RoutenvorlageApi/{Controller}/{Id} wurde gefunden und korrekt in einen Controller geparstOrder undId=12. Der Controller (abgeleitet vonApiController) ist in der Webassembly vorhanden, in der sich auch alle MVC-Controller befinden.

Ich weiß jedoch nicht, wie der Status ist000 könnte bedeuten und warum kein Abschnitt "Routenauswahl" angezeigt wird (was normalerweise der Fall ist, auch wenn die Baugruppe keinen einzigen enthält)ApiController(siehe Screenshots auf der oben verlinkten Seite). Irgendwie sieht es aus wie neinApiController wird gefunden oder gar nicht gesucht oder die Suche schlägt unbemerkt fehl.

Die IIS-Protokolldateien enthalten keine nützlichen Informationen. Das Ändern verschiedener Anwendungspooleinstellungen und das Verwenden desselben Anwendungspools für den Test und die reale Anwendung hat nicht geholfen.

Ich bin gerade dabei, "Features", Konfigurationseinstellungen, Baugruppen von Drittanbietern usw. aus der Anwendung zu entfernen, um sie am Ende auf die geringe Größe der Testanwendung zu reduzieren, und hoffe, dass sie irgendwann zu funktionieren beginnt.

Hat jemand eine Ahnung, woran das liegen könnte? Auch jede Debugging- oder Logging-Idee, um möglicherweise den Grund zu finden, ist sehr willkommen.

Bearbeiten

Dank Darrel Millers Tipp in den Kommentaren unten habe ich integriertAblaufverfolgung für ASP.NET Web Api.

Für die (GET) -Anforderungs-URLhttp://myserver/api/order/12 Ich bekomme folgendes:

In der Entwicklungsumgebung erfolgreich (in Kurzform):

Botschaft:http://localhost:50020/api/order/12; Kategorie: System.Web.Http.Request

Controller Auswahl und Instanziierung ...

Operator: DefaultHttpControllerSelector; Bedienung: SelectController; Meldung: Route = "Controller: Auftrag, ID: 12"; Kategorie: System.Web.Http.Controllers

Operator: DefaultHttpControllerSelector; Bedienung: SelectController; Nachricht: Bestellung; Kategorie: System.Web.Http.Controllers

Betreiber: HttpControllerDescriptor; Bedienung: CreateController; Botschaft: ; Kategorie: System.Web.Http.Controllers

Operator: DefaultHttpControllerActivator; Vorgang: Erstellen; Botschaft: ; Kategorie: System.Web.Http.Controllers

Operator: DefaultHttpControllerActivator; Vorgang: Erstellen; Nachricht: MyApplication.ApiControllers.OrderController; Kategorie: System.Web.Http.Controllers

Aktionsauswahl, Parameterbindung und Aktionsaufruf folgen ...

Inhaltsverhandlung und Formatierung für das Ergebnis ...

Betreiber: DefaultContentNegotiator; Betrieb: verhandeln; Meldung: Typ = "String" ...Mehr

Controller entsorgen ...

Betreiber: OrderController; Bedienung: Entsorgen; Botschaft: ; Kategorie: System.Web.Http.Controllers

In der Produktionsumgebung nicht erfolgreich (in Kurzform):

Botschaft:http://myserver/api/order/12; Kategorie: System.Web.Http.Request

Operator: DefaultHttpControllerSelector; Bedienung: SelectController; Meldung: Route = "Controller: Auftrag, ID: 12"; Kategorie: System.Web.Http.Controllers

Der gesamte Teil der Controller-Aktivierung, der Aktionsauswahl, der Parameterbindung und des Aktionsaufrufs fehlt, und die Fehlermeldung wird sofort nach Aushandlung und Formatierung des Inhalts ausgegeben:

Betreiber: DefaultContentNegotiator; Betrieb: verhandeln; Meldung: Typ = "HttpError" ...Mehr

Antworten auf die Frage(3)

Ihre Antwort auf die Frage