Ich versuche, einen API-Controller zu einer MVC5-Anwendung hinzuzufügen. Allerdings bekomme ich einen Fehler "Die RouteData muss ein Element mit dem Namen 'Aktion' mit einem nicht leeren String-Wert enthalten." Wenn ich zur Route gehe: http://localhost/DataAPI/Community/Get/RouteData muss 'Aktion' für eine WebAPI-Route enthalten?
Die Anwendung scheint einen API-Controller nicht zu erkennen - wenn ich die Aktion zu den Routenvorgaben hinzufüge, erhalte ich einen 404-Fehler. Wenn ich es durch einen Standard-Controller ersetze (und den Routendaten eine Standardaktion hinzufüge), kann ich die Daten abrufen. Fehle ich etwas?
Die Steuerung lebt in den Controller/DataAPI Unterverzeichnis:
using System.Web.Http;
using System.Net.Http;
namespace ERP.Controllers.DataAPI
{
public class CommunityController : ApiController
{
PCSEntities db = new PCSEntities();
public IEnumerable<Community> Get(Guid ApiKey)
{
return db.Communities.AsNoTracking().Take(10);
}
}
}
Das ist mein Weg config:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
#region DataAPI
var ns = new[] { "ERP.Controllers.DataAPI" };
routes.MapRoute(
name: "DataAPI",
url: "DataAPI/{controller}/{ApiKey}/{id}",
defaults: new { ApiKey = Guid.Empty, id = UrlParameter.Optional },
namespaces: ns
);
#endregion
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
Ihre Konfiguration ist ein wenig aus. Sie zeigen Ihre Route-Konfiguration für einfache mvc nicht Web-API. – Nkosi
Sie haben Recht! Ich vermutete, dass es so winzig war. Vielen Dank :) –