2013-08-01 4 views
5

Ich habe folgende Strecken definierten in meiner RouteConfig Klasse:Warum funktioniert diese MVC-Route nicht?

 routes.MapRoute(
      name: "DefaultMessage", 
      url: "API/{action}", 
      defaults: new { action = "MessageGateway" } 
     ); 
     routes.MapRoute(
       name: "DefaultNoParms", 
       url: "{controller}/{action}", 
       defaults: new { controller = "API", action = "Login" } 
     ); 

Wenn ich dies mit nur localhost auf meinen localhost zu testen: 65133/wie die Adresse, die ich auf dem APIController zur Login-Action geroutet bin, aber wenn ich localhost versuchen: 65133/API ich die folgende Fehlermeldung erhalten:

The matched route does not include a 'controller' route value, which is required

Kann mir jemand sagen, was falsch ist? Das ActionResult MessageGateway existiert ...

+0

Während Sie Ihre Frage nicht beantworten. Untersuchen Sie AttributeRouting. –

Antwort

11

Scheint so, als ob der Fehler selbsterklärend ist - Sie müssen ihm sagen, zu welchem ​​Controller er gehen soll.

routes.MapRoute(
    name: "DefaultMessage", 
    url: "API/{action}", 
    defaults: new { controller = "API", action = "MessageGateway" } 
); 
+2

Ja, genauer gesagt, der Fehler ist, dass Sie keinen Controller in den Standardeinstellungen oder in der Route angegeben haben. –

+0

Vielen Dank. Ich nehme an, ich nahm an, dass "API /" das tun würde. –

+0

OK. Das hat mir einen Teil des Weges dorthin gebracht ... aber jetzt, wenn ich diese Route (API/Apilogin) hinzufüge, erkennt sie es nicht: routes.MapRoute ( Name: "APILogin", URL: "API/Apilogin ", Standards: neu {Controller =" API ", Aktion =" Apilogin "} ); routes.MapRoute ( Name: "DefaultMessage" url: "API/{action}" Defaults: new {controller = "API" action = "MessageGateway" }); routes.MapRoute ( Name: "DefaultNoParms", url: "{Controller}/{Aktion}", defaults: new {controller = "API" action = "Login"} ); –