2017-01-04 17 views
6

'dan önce eşleştiğinden emin olun. Hem MVC hem de WebAPI2 kullanan bir web uygulamasına sahibim. El ile yapılandırılmış MVC yollarını eşleştirmeden önce her zaman WebAPI2 öznitelik yollarıyla eşleşen isteklerin olmasını isterim. RouteConfig.RegisterRoutes(RouteTable.Routes)'u aramadan önce configuration.MapHttpAttributeRoutes()'u aramayı denedim ancak bu işe yaramıyor.WebAPI2 yollarının MVC Routes

WebAPI2 yollarının her zaman önceliğe sahip olmasını sağlamak için herhangi bir yolu var mı?

+7

Web API'sı rotaları için kural, "api" ve hatta "v1" sürümüyle rotanın ön ekidir. Bu onları MVC yollarından ayıracaktır, bu nedenle MVC ve Web API arasında bir sözleşmeyi paylaşmıyorsanız, siparişi neden önemsiyorsunuz? –

cevap

0

Bunu bir ver. Yeni bir kontrol ünitesi oluşturmak için VS kullanın. Bazılarının kontrol cihazınızın adı olduğu bazıController olduğundan emin olun, "Denetleyici" ile bitmelidir.

public class someController : ApiController 
    { 
     [Route("api/test/{name}"), HttpGet] 
     public string Router(string name) 
     { 
      return "Your name is: " + name; 
     }   
    } 

Ayrıca Global.asax dosyasında bu eklemek ... Sınıf ApiController devralan emin olun. Yukarıda

protected void Application_Start(object sender, EventArgs e) 
    { 
     GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); //This will remove XML serialization and return everything in JSON. 

     GlobalConfiguration.Configuration.MapHttpAttributeRoutes(); 
     GlobalConfiguration.Configuration.EnsureInitialized(); 
    } 

, api rota HttpGet bekliyor, Sen de HttpPost kullanın ve form ile gönderilen verileri almak için FormDataCollection kullanabilirsiniz. API'lerinizi {someparameter}

ile nasıl parametreleştirebileceğinizi not edin Yukarıdakiler oldukça basittir ve API denetleyicisi serileştirmeyi gerçekleştiren çoğu nesneyi serileştirebilir. Eğer değilse, NewtonSoft veya bir şey kullanabilirsiniz.