2017-05-02 27 views
-1

我查看了mvc5,webapi2的相關鏈接,但無法找出我的錯誤。MVC5 WebApi2路由不起作用

我的問題: /API /電子銀行/ CheckLogin不excuting checkLogin方法的代碼在ebankingcontroller

鏈接選中:

Custom Routing not working in MVC5

WebAPI2 and MVC5 route config

QueryString with MVC 5 AttributeRouting in Web API 2

App_start代碼:

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

RouteConfig.cs

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

WebApiConfig.cs

public static string UrlPrefixRelative { get { return "~/api"; } } 
    public static void Register(HttpConfiguration config) 
    { 
     // Web API configuration and services 

     // Web API routes 
     config.MapHttpAttributeRoutes(); 

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

APi的控制器:

[RoutePrefix("api/EBanking")] 
public class EBankingController : ApiController 
{ 
    public EBankingController() 
    { 
    //some other code, it runs 
    } 

    [HttpGet, HttpPost] 
    [Route("CheckLogin")] 
    public IEnumerable<usr06user_role> CheckLogin(string UserName, string Password) 
    { 
    //main code which doesn;t runs 
    } 

    public IEnumerable<usr06user_role> GetAll() 
    { 
    //test code which runs when we call: /api/ebanking/ 
    } 

結果截圖: enter image description here

回答

1

在你WebApiConfig.cs增加另一個路線基於動作的路由是這樣的:

// Web API routes 
    config.MapHttpAttributeRoutes(); 

    config.Routes.MapHttpRoute(
     name: "ActionBased", 
     routeTemplate: "api/{controller}/{action}/{id}", 
     defaults: new { id = RouteParameter.Optional } 
    ); 

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

"api/{controller}/{action}/{id}"將允許API /電子銀行的呼叫/ checklogin

或者你甚至可以在屬性加滿路線如:

[Route("api/EBanking/CheckLogin")] 
public IEnumerable<usr06user_role> CheckLogin(string UserName, string Password) 
{ 
    //main code which doesn;t runs 
} 
+0

都嘗試建議的方法,增加了額外的RouteMap但仍然沒有工作......我的加入結果屏幕 – KoolKabin

+0

哪個狂勝的屏幕截圖ES正在工作? api/ebanking是否有效?你有沒有其他的路線可行? – degant

+0

另一個帖子路徑/ api/ebanking /創建作品... – KoolKabin