ASP.NET MVC 3 기반 응용 프로그램을 개발 중이며 Ajax POST (jQuery를 통해)를 컨트롤러 동작 중 하나에 수행하려고 할 때 간헐적 인 문제가 발생합니다. 때로는 컨트롤러 동작이 제대로 호출되고 코드가 예상대로 수행되지만 컨트롤러 동작이 호출되지 않으며 브라우저가 기본적으로 요청이 시간 초과 될 때까지 기본적으로 응답하지 않는 경우가 있습니다.Ajax POST가 때때로 ASP.NET MVC 컨트롤러 동작을 호출하지 못합니다.
우리는 문제를 일관되게 재현 할 수 없기 때문에 실망합니다. 다른 한편으로, 우리는 너무 자주 노력하지 않고도 그런 일이 자주 일어날 수 있도록 자주 발생합니다. Firebug의 "Net"탭에서 브라우저가 확실히 POST 요청을하는 것을 볼 수 있으며 올바른 URL을 치고 있음을 알 수 있습니다. 제가 아직 해본 적이없는 한 가지,하지만 다른 곳에서 제안한 것을 보았습니다. 중간에 피들러 (Fiddler)를 설정하여 요청이 얼마나 멀리 있는지 봅니다. 그러나 웹 서버 (IIS)까지 확장한다고 가정하면이 디버깅의 다음 단계는 무엇이되어야합니까? 강력한 Windows/.NET/IIS 배경이 없으므로 어디서부터 시작해야할지 모르겠습니다.
업데이트 :
다음은 POST 수행하는 jQuery 코드입니다 :
var self = this;
var jsonData = foo.toJSONString();
$.ajax({
type: 'POST',
dataType: 'json',
url: '/MyController/AddFoo',
data: { foo: jsonData },
success: function (data) {
self.showSuccessfulSubmissionDialog();
},
error: function (xhr, textStatus, error) {
self.showUnsuccessfulSubmissionDialog(xhr.responseText);
}
});
가 여기에 컨트롤러 액션에 대한 C# 코드입니다 : (
[HttpPost]
[Authorize]
public JsonNetResult AddFoo(string foo)
{
var fooObject = JsonConvert.DeserializeObject<Foo>(foo, SerializerSettings);
try
{
// Do something with fooObject
}
catch (Exception ex)
{
var formattedString = ex.Message.Replace("\r\n", " ");
return BuildErrorResult("An error occured writing data to the server: " +
formattedString);
}
return BuildSuccessResult();
}
몇 가지 사소한 세부 사항 특히 변수 이름)이 변경되었지만 그 요지는 여기에 나와 있습니다. 또한 이전에 언급했듯이,이 "breaks"가 발생했을 때 Firebug는 POST가 실행되었다고 주장하지만 컨트롤러 액션이 시작될 때 브레이크 포인트에 도달하지 않습니다. 그래서 어딘가에도 공은 떨어졌습니다. 그렇지 않은 경우를 제외하고 컨트롤러 동작은 문제없이 실행됩니다.
POST 및 서버 동작 코드를 표시 할 수 있습니까? – rae1
IIS7을 사용하는 경우 실패한 요청 추적을 사용하여 사용자가 찾을 수있는 것을 볼 수 있습니다. http://www.iis.net/learn/troubleshoot/using-failed-request-tracing/using-failed-request-tracing-rules-to-troubleshoot-application-request-routing-arr – HackedByChinese
@ rae1n, 나는 클라이언트 측 POST 및 서버 측 컨트롤러 작업을위한 코드가 추가되었습니다. –