正常に動作する Web API プロジェクトがありました。これを MVC プロジェクトにマージしたところ、URI パラメーターを持つアクションのみが機能するようになりました。他のすべてのアクションは、コントローラーでさえ見つからない 404 Not Found で終了します。
これが私が WebApiConfig に持っているものです(標準のもの):
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
コントローラークラスは次のとおりです。
[Authorize]
[RoutePrefix("api/WikiPlan")]
public class WikiPlanController : ApiController
動作するアクションは次のとおりです。
http://localhost:2000/api/WikiPlan/SearchWikiPlans/baby
[AllowAnonymous]
[HttpGet]
[Route("SearchWikiPlans/{keyword}")]
[ResponseType(typeof(List<WikiPlanSearchResultViewModel>))]
public IHttpActionResult SearchWikiPlans(string keyword)
これは機能しないものです(独自のプロジェクトにあったときに機能していました):
http://localhost:2000/api/WikiPlan/TopWikiPlans
[AllowAnonymous]
[HttpGet]
[Route("TopWikiPlans")]
[ResponseType(typeof(List<TopWikiPlan>))]
public IHttpActionResult TopWikiPlans()
何が悪いのかわかりません。ご協力いただきありがとうございます!