APIコントローラをMVC5アプリケーションに追加しようとしています。しかし、私はエラーが発生している "RouteDataは、 '空の文字列の値で'アクション 'という名前の項目が含まれている必要があります。 http://localhost/DataAPI/Community/Get/WebAPIルートにはRouteDataに 'action'が含まれている必要がありますか?
アプリケーションが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 }
);
}
}
設定が少しずれています。あなたは、Web APIではなくプレーンなMVCのルート設定を表示しています。 – Nkosi
あなたは正しいです!私はそれがこのような小さなものだと思った。多くのありがとう:) –