2016-03-20 29 views
2

Üzerinde çalıştığım asp.net mvc 5 + web api 2'de, tanımladığım webapi yollarının bazıları çalışmıyorken, bazılarında Mükemmel çalışıyor. Sorunun ne olduğunu tanımlayamıyorum. Ve sormadan önce bütün SO sorularını okudum ve bulabildiğim tüm çözümleri uyguluyorum, fakat hiçbiri şu anki durumumda çalışmıyor gibi görünüyor. Ayrıca kontrol ettim, çift kontrol ettim ve nedenini anlayamıyorum. Web api'yi etkilediğini düşündüğüm bazı yapılandırmalar ve rota kayıtları.Bazı asp.net api özniteliği tabanlı yönlendirme geri dönüyor 404 (bulunamadı)

Rota tanımı

[HttpPost] 
[Route("FollowApi/{profileId:int}/FollowClient" Name = "FollowClient")] 

Application_Start yapılandırma

AreaRegistration.RegisterAllAreas(); 
GlobalConfiguration.Configure(WebApiConfig.Register); 
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
RegisterRoutes(RouteTable.Routes); 

webConfig yapılandırma

<system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
     <add name="ImageResizingModule" type="ImageResizer.InterceptModule" />  
     <remove name="UrlRoutingModule-4.0" /> 
     <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" /> 
    </modules> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> 
     <remove name="TRACEVerbHandler" /> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    </system.webServer> 

Lütfen, bu problemin neden oluştuğuna dair herhangi bir yardım veya işaretçi, zaman kısıtlı bir durumda olduğum için ciddi şekilde takdir edilecektir.

Düzenleme

Çalışma api

public class CommonApiController : BaseApiController 
{ 
    [Authorize] 
    [HttpGet] 
    [Route("Client/GetInfoCounts")] 
    public IHttpActionResult GetInfoCounts() 
    { 
     //Method body 
    } 
} 

Çalışmıyor api Bu denetleyici üzerinde RoutePrefix benziyor

public class FollowApiController : BaseApiController 
{ 
    [HttpPost] 
    [Route("FollowApi/{profileId:int}/FollowClient")] 
    public IHttpActionResult Follow(int profileId) 
    { 
     //Method body 
    } 
} 
+2

Yolun çalıştığı denetleyicilerin kodunu gösterebilir ve denetleyicileri kodlamadıkları yerlerde kodlarsanız iyi olur. Ayrıca, tüm rotalarınız Özellik tabanlı mı, yoksa yapılandırmada bunlardan bazılarınız var mı? – Martin

+1

Tamam, soruyu düzenlememe izin verin. – Cizaphil

+1

Rotanızı parametreyi son belirteci olarak tanımlamak mantıklı olmaz: '[Rota (" FollowApi/FollowClient/{profileId: int} ")]'? – Alexei

cevap

1

istemci çağrısı dahil edilmemiştir. Bundan uzaklaşmam, bu tür problemleri gidermek için belirli bir modele sahip olmanın mantıklı olması. Şun gibi bir şey:

  • URL doğru mu?
  • httpMethod doğru mu?
  • Parametreler doğru şekilde adlandırılmış mı?