Wie greife ich auf RouteTable.Routes.MapHttpRoute zu?

8

Ich habe eine Web Forms-App, die ich vor einigen Monaten erstellt habe, und ich habe einen Web-API-Controller hinzugefügt. Ich habe versucht, das "automatische" Routing zu verwenden, das ich kürzlich in einer Präsentation gesehen habe, aber alles, was ich bekam, war ein 404. Dann habe ich versucht, das Routing für den Web-API-Controller in meinem Global.asax mit MapHttpRoute hinzuzufügen, wie ich es gesehen habe mehrere Tutorials. Aber selbst nach dem Hinzufügen von Imports System.Web.Http zur Datei erkennt das Projekt RouteTable.Routes.MapHttpRoute() nicht. Ich habe versucht, andere Namespaces hinzuzufügen und sicherzustellen, dass ich alle notwendigen Nuget-Pakete habe, aber ich kann das Routing für die Web-API noch nicht einrichten Regler. Hat jemand eine Empfehlung, wo man anfangen soll?

    
Michael Richardson 03.09.2013, 03:50
quelle

4 Antworten

9

Ich habe diesen Thread gefunden, der darauf hinweist, dass IntelliSense anscheinend ein Problem damit hat, aber wenn Sie etwas eingeben wie folgt, wird es gebaut und ausgeführt:

%Vor%     
woz 02.10.2013, 12:56
quelle
12

Wenn jemand das gleiche Problem in C # hat, lesen Sie weiter.

Ich verwende auch eine Webformular-App und setze das Routing durch die Global.asax -Datei. Für mich war Intellisense zu 100% korrekt und es würde sich nicht aufbauen. Um dies zum Laufen zu bringen, musste ich folgende using-Direktiven hinzufügen:

%Vor%

und

%Vor%

Vorsicht nicht , um using System.Web.Http.Routing versehentlich zu verwenden. Das wird nicht funktionieren.

    
spryce 19.11.2013 07:53
quelle
11

Sie sollten den Verweis auf die System.Web.Http.WebHost Assembly hinzufügen und sicherstellen, dass Sie

haben %Vor%

Warum? MapHttpRoute ist in zwei Assemblys in System.Web.Http :

definiert %Vor%

Mitglied von System.Web.Http.HttpRouteCollectionExtensions

und in System.Web.Http.WebHost

%Vor%

Erstens ist eine Erweiterung auf HttpRouteCollection

Zweitens ist eine Erweiterung auf RouteCollection

Wenn Sie also eine Webforms-App haben, werden Ihre Routen in RouteCollection definiert, sodass Sie die WebHost -Version benötigen.

Weil Architektur es WebApi ermöglicht, auch von IIS gehostet zu werden. siehe Hosting WebApi

    
Martin Kunc 19.09.2013 04:27
quelle
1

Ich habe gerade zwei neue Webforms-Apps erstellt (eine mit .NET 4, die andere 4.5), habe nichts mehr getan, als web api über nuget hinzuzufügen, und es hat funktioniert.

In welcher Version von ASP.NET läuft Ihre App? Wenn Sie ASP.NET WebForms 2.0 / 3.5 ausführen, wird es nicht unterstützt.

Hier ist ein Tutorial, das zeigt, wie Sie Web API zu Ihrer Web Forms App hinzufügen können - Ссылка

    
William L 03.09.2013 05:42
quelle