programing

WebAPI 컨트롤러에서 작업을 찾을 수 없습니다.

skycolor 2023. 6. 11. 10:32
반응형

WebAPI 컨트롤러에서 작업을 찾을 수 없습니다.

오류가 발생했습니다. 컨트롤러 'Action'에서 요청과 일치하는 작업을 찾을 수 없습니다.

URL은http://localhost:37331/api/action/FindByModule/1.

제가 사용한 라우팅은

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

컨트롤러:

public class ActionController : ApiController
{
    private IActionRepository repository = null;

    [HttpGet]
    [ActionName("All")]
    public IEnumerable<JsonAction> All()
    {
        return from action in this.repository.Get()
               select new JsonAction
               {
                   ID = action.ID,
                   Text = action.Text.Trim(),
                   Description = action.Description.Trim(),
               };
    }

    [HttpGet]
    [ActionName("FindByModule")]
    public IEnumerable<JsonAction> FindByModule(Int64 moduleId)
    {
        return from action in this.repository.FindByModule(moduleId)
               select new JsonAction
               {
                   ID = action.ID,
                   Text = action.Text.Trim(),
                   Description = action.Description.Trim(),
               };
    }
}

매개 변수 이름이 일치하지 않기 때문입니다.경로에서 값 1이 이름이 지정된 매개 변수에 할당됩니다.id그리고 당신의 작업은 이름이 붙은 매개 변수를 찾는 것입니다.moduleId.

첫 번째 옵션은 다음과 같이 경로를 변경하는 것입니다.

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

두 번째는 URL을 다음과 같이 변경하는 것입니다.

http://localhost:37331/api/action/FindByModule?moduleId=1

매개 변수 이름이 일치합니다.

내 api에 매개 변수가 너무 많아서 오류가 발생했습니다.저는 루트에 대한 문제를 해결했습니다.

[Route("addressverification/{id}/{no}/{day}/{month}/{year}")]
public AdressVerificationResult  Get(long? id, long? no ,long? day, long? month, long? year)
        {
        
        return new AdressVerificationResult  
            {
                Aciklama = "19........4 kimlik numaralı kişinin 18.......1 adres numarasında 'YerlesimYeri' adres tipi için geçerli bir yurtiçi adres beyanı mevcuttur.",
                DurumKod = true
            };


         }
        

언급URL : https://stackoverflow.com/questions/14481592/webapi-no-action-was-found-on-the-controller

반응형