2016-08-25 2 views
0

나는 MVC 컨트롤러 방법은 다음과 같이 정의했다이 내 로컬에서 작동다중 바디 매개 변수가있는 MVC 게시 메서드, 왜 내가 404를 얻고 있습니까? JQuery와 같이 호출</p> <pre><code>[HttpPost] public ActionResult EndBatchForConditions(string a, int b) { ... } </code></pre> <p>:

$.ajax({ 
    type: "POST", 
    url: url, 
    data: { 
     a: $form.find('#aCtl').val(), 
     b: $form.find('#bCtl').val() 
    }, 
    success: function (data, textStatus, jqXHR) { 
     ... 
    }, 
    error: showError 
}); 

, 그리고 약 6 개월 동안 우리의 테스트 및 프로덕션 시스템에서 일하고있다 .

우리는 이것을 자신의 웹 사이트에서 다른 웹 사이트의 응용 프로그램으로 이동하고 테스트 서버로 이동했습니다. 이 방법은 나에게 404를주고, 그 밖의 모든 것은 잘 동작한다. 다른 매개 변수가있는 동일한 컨트롤러에서 다른 메서드가 동일한 방식으로 호출되면 제대로 작동합니다. 필자는 URL을 확인하기 위해 Fiddler를 사용했으며 두 방법 모두에 대한 요청이 정확하며 정확히 동일합니다.

[FromBody] 속성을 사용하여 여러 개의 POST 본문 매개 변수를 사용할 수 없다는 것을 알고 있습니다. 이 전화를 걸 수있는 잘못된 방법입니까? 그렇지 않은 경우이 문제를 해결하려면 어떻게해야합니까?

+0

'url'이 상대방에 전달됩니까? –

+0

ajax 호출의 url 속성에 대한 "url"값은 무엇입니까? –

+0

#bCtl이 발견되어 값이 있음을 확인할 수 있습니까? b가 null 인 경우 EndBatchForConditions의 서명이 일치하지 않고 (int b는 nullable이 아니므로) 404가됩니다. 'int b'를 'int'로 변경하면 작동합니까? 비' –

답변

0

이것은 라우팅 문제가 아닙니다. 이 메소드는 예외를 발생 시켰고 global.asax.cs는 누락 된 오류 페이지로 리다이렉션하여 404를 던졌습니다.