Web API を既存の ASP.NET MVC プロジェクトに追加しようとしています。これは、元は ASP.NET MVC 2 Web サイトで、後で MVC 3 にアップグレードされ、次の手順を使用して MVC 4 に再度アップグレードされました。
ASP.NET MVC 2 プロジェクトを ASP.NET MVC 3 にアップグレードする
ASP.NET MVC 3 プロジェクトを ASP.NET MVC 4 にアップグレードする
私の Api コントローラーは非常に単純です。実際、これはデフォルトのテンプレートです。
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
}
API ルートを登録するためのクラスを追加しました。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
それは Application_Start から呼び出されます
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
ただし、「localhost:50315/api/values」にアクセスしようとすると、次のエラーが発生します。
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:50315/api/values'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'values'.
</MessageDetail>
</Error>
ルーティング デバッガーによると、ルートは正しく機能しているようです。Web API ルートは、「現在の要求に一致する」最初のエントリです。