2012-12-18 3 views
23

나는 이것에 관해 여러 스레드를 보았고 모든 대답을 시도했다. (ASP.NET MVC JsonResult return 500)

내 아약스 요청이 500 내부 오류를 다시 돌리고있다. 디버깅을하면 결코 내 행동에 도달하지 못합니다. 여기

내 아약스 호출입니다 :

$.ajax({ 
        url: '@Url.Action("UpdateSortOrder", "FormItems")', 
        data: { itemToUpdateId: item.attr("id"), newParentItemId: parentItemId, newPreviousItemId: previousItemId }, 
        type: 'POST', 
        success: function (data) { 
         console.log(data); 
        }, 
        error: function (xhr, status, exception) { 
         console.log("Error: " + exception + ", Status: " + status); 
        } 
       }); 

그리고 내 행동 :

HTTP/1.1 : 크롬 콘솔을 사용하여

[HttpPost] 
    public ActionResult UpdateSortOrder(Guid itemToUpdateId, Guid newParentItemId, Guid newPreviousItemId) 
    { 
     FormItem updatedItem = _formItemService.GetOne(x => x.Id == itemToUpdateId); 

     return Json(updatedItem, JsonRequestBehavior.DenyGet); 
    } 

, 이러한 응답의 응답 헤더입니다 500 내부 서버 오류 캐시 제어 : 개인 콘텐츠 형식 : 텍스트/HTML; 문자셋 = UTF-8 서버 : 마이크로 소프트 IIS/7.5 X-AspNetMvc-버전 : 3.0 X-ASPNET-버전 : 4.0.30319 X-구동 - 기준 : ASP.NET 날짜 : 2012년 12월 18일 (화) (21) : 53 : 41 GMT 콘텐츠 길이 : 17041

서버 로그에는 하위 상태 코드가 표시되지 않습니다. 내가 여기서 뭘 잘못하고 있는거야? GET 대신 POST를 사용하는 것을 선호합니다.

폼 데이터로 표시되고 :

itemToUpdateId : 18ac5399-342e-4a39-9da1-3281a89501df

newParentItemId : NULL

newPreviousItemId : NULL

어느 맞다. 나는이 질문에 같은 응용 프로그램/JSON과 = 전통 true로의 contentType 설정을 시도했습니다

: Sending ajax post to mvc with "application/json; charset=utf-8" returns error 500 from vs web developer server

같은 오류가 발생했습니다.

+3

Fiddler를 사용하여 원본 POST를보고 전선을 가로 지르는 것을 보았습니까? –

+1

경로 설정 방법을 공유 할 수 있습니까? – kabaros

+0

경로가 작동 중입니다. 지금은 영역을 추가하여 채워진 기본 경로 규칙 만 사용합니다. 보기를 반환하고 URL을 입력하도록 동작을 변경하면 경로가 올바르게 처리됩니다. – SventoryMang

답변

59

글쎄, 문제가 무엇인지 알 수 있었고, AJAX 구문이나 동작에 문제가 없었습니다. 내 반환 된 객체에 순환 참조가 포함 된 것입니다. 네트워크 탭에서 POST 요청을 클릭 한 다음 미리보기 탭을보고 Chrome 콘솔의 실제 오류를 볼 수있었습니다. 실제 오류 메시지가 표시됩니다.

+2

네트워크 탭> 세부 정보> 응답 본문을 사용하여 IE11 개발자 도구에서 비슷한 문제를 해결할 수있었습니다. –

+0

여전히 문제가있는 사람은 [솔루션] (http://stackoverflow.com/a/16916600/4896260)을 확인하십시오. 그것은 Fiddler 등이 제공 할 수 없었던보다 자세한 오류를 제공합니다. – usr4896260

1

Fiddler은 클라이언트 측과 서버 측 간의 응답을 디버깅하는 데 매우 유용한 HTTP 요청을 잡기위한 훌륭한 도구입니다. 브라우저에서 문제가 의심 될 때 열어보고 오류가 발생하여 피들러를 열어 요청을 선택한 다음 원시 정보를 봅니다.

0

당신이 다음 사람이 여기서 끝나는 그냥 경우 ... 그냥 간단한 변수를

1

이전 게시물, 다른 대답을 반환 반환하지 않는 성공에 updatedItem가 필요하지 않은 경우 ..

내 문제는 내가 호출 한 컨트롤러 동작이 부분보기 동작 결과를 반환했으며 PartialView .cshtml 파일이 서버에 게시되지 않았기 때문에 발생했습니다 (게시 할 때 Visual Studio 프로젝트에 포함되지 않았습니다) .

관련 문제