Ü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
}
}
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
Tamam, soruyu düzenlememe izin verin. – Cizaphil
Rotanızı parametreyi son belirteci olarak tanımlamak mantıklı olmaz: '[Rota (" FollowApi/FollowClient/{profileId: int} ")]'? – Alexei