본문 바로가기

프로그래밍/ASP.NET

ASP.Net 오류코드와 함께 JsonResult 결과 받아오기

asp.net MVC error with Json

에러코드 500과 함께 JsonResult를 넘겨줬는데 Json 객체를 받아오지 못하는 경우가 발생하였다.

 

[컨트롤러단]

 

컨트롤러에서 500 에러코드와 함께 JsonResult 형식의 결과를 넘겨준다.

 

[뷰단]

로컬에서 Test 한경우

IIS10.0
에러코드 500에 정상적으로 메시지를 넘겨받음

 

JsonResult로 넘겨주었기 때문에 Response Header의  Content-Type : application/json; 인것을 확인할 수 있다.

그리고 넘겨받은 XMLHttpRequest 객체 안의 response 안에는 서버에서 받은 JsonResult(오류메시지)를 확인할 수 있다.

 

 

실제운영서버에서 Test 한경우

IIS8.5
에러코드 500에 정상적으로 메시지를 넘겨받지 못함

운영서버에서도 마찬가지로 JsonResult로 넘겨주었는데 Response Header의  Content-Type : text/html 이다.

넘겨받은 XMLHttpRequest 객체 안의 response 안에는 html문서형식의 값이 저장되었는 것을 볼 수 있다. 

 

로컬환경에서는 IIS 버전이 10.0 이어서 별탈없이 View에서 JsonResult를 넘겨받았다. 

그러나 실제 운영서버 환경의 경우 IIS 버전이 8.5라서 그런지..

에러코드만 넘어올뿐 response 객체에는 html문서로 넘어오는것을 발견하였다.

 

분명 JsonResult로 넘겼는데 말이다.. 여러 삽질 후 검색 끝에 아래 링크에서 해결방법을 찾았다.

 

https://gist.github.com/beccasaurus/929007/a8f820b153a1cfdee3d06a9c0a1d7ebfced8bb77

 

Without this, returning a 400 gives you just "Bad Request" ... with this, you can return a custom response

Without this, returning a 400 gives you just "Bad Request" ... with this, you can return a custom response - README.markdown

gist.github.com

 

Web.config 에서 오류가 발생하더라도 Response가 존재하면 같이 넘겨주도록 하는 옵션이 있는것 같다.

 

<system.webServer>

    <httpErrors existingResponse="PassThrough"></httpErrors>

</system.webServer>

 

 

 

제 블로그의 내용이 도움이 되셨나요?

여러분의 공감댓글이 큰 힘이됩니다 :)

▼▼▼▼▼▼▼▼▼▼▼

'프로그래밍 > ASP.NET' 카테고리의 다른 글

ASP.NET MVC 간단한 예제 프로그램 파일 첨부  (0) 2017.03.28