2016-10-20 12 views
0

私はASP.NET MVC5 Webアプリケーションを作成し、HelpPagesコンポーネントとWeb APIコンポーネントを追加しました。 MVC WebアプリケーションとHelpPagesは正常に機能しましたが、http://localhost:port/api/Samples/GetAllでAPIコントローラにアクセスできませんでした。何が間違っている可能性があり、どうすればこの問題を解決できますか?ASP.NET Web APIコントローラで404エラーが発生しました

WebApiConfig.cs

namespace MySolution.ApiV1 
{ 
    using System.Web.Http; 
    public static class WebApiConfig 
    { 
     public static void Register(HttpConfiguration config) 
     { 
      // Web API configuration and services 
      config.EnableCors(); 

      // Web API routes 
      config.MapHttpAttributeRoutes(); 

      config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { id = System.Web.Http.RouteParameter.Optional } 
      ); 
     } 
    } 
} 

APIコントローラ

namespace MySolution.ApiV1.Controllers.Api 
{ 
    [System.Web.Http.RoutePrefix("api/Samples")] 
    public class SamplesController : System.Web.Http.ApiController 
    { 
     [System.Web.Http.HttpGet] 
     [System.Web.Http.Route("GetAll")]    
     public System.Web.Http.IHttpActionResult Get() 
     { 
      return Ok("Hello Web API!"); 
     } 
    }  
} 

Global.ascx.cs

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
    System.Web.Http.GlobalConfiguration.Configure(WebApiConfig.Register); 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
} 

答えて

1

私は問題を発見しました。 Web APIのルートは、mvcルートの前に呼び出される必要があります。私はなぜそれが違いをもたらすのか分からないが、私は注文を交換した後、それは働いた。

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
    System.Web.Http.GlobalConfiguration.Configure(WebApiConfig.Register); // call first 
    RouteConfig.RegisterRoutes(RouteTable.Routes); // call second 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
} 
関連する問題