Я пытаюсь добавить контроллер API в приложение MVC5. Однако я получаю сообщение об ошибке «RouteData должен содержать элемент с именем« действие »с непустым строковым значением». когда я перехожу на маршрут: http://localhost/DataAPI/Community/Get/RouteData должен содержать «действие» для маршрута WebAPI?
Приложение, похоже, не хочет распознавать контроллер API - если я добавлю действие к значениям по умолчанию для маршрута, я получаю ошибку 404. Когда я заменяю его стандартным контроллером (и добавляю действие по умолчанию к данным маршрута), я могу получить данные. Я что-то упускаю?
Контроллер живет в контроллерах/DataAPI подкаталог:
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);
}
}
}
Это мой маршрут конфигурации:
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 }
);
}
}
Вы немного настроены. Вы показываете конфигурацию своего маршрута для простого mvc, а не web api. – Nkosi
Вы правы! Я подозревал, что это было что-то крошечное. Большое спасибо :) –