MVC를 반환한다.Json Result + Response 설정.상태 코드
프로젝트: .net 4.0 프레임워크에서 실행되는 ASP MVC 4:
VS 2010 Express(또는 로컬머신에서 IIS 7.5로 전개되어 실행 중)에서 애플리케이션을 실행하는 경우 액션의 다음 결과(의사코드)가 예상대로 동작합니다.
[HttpPost]
public ActionResult PostWord(Model model)
{
....
Response.StatusCode = 400;
Return new JsonResult { data = new {fieldName = "Word", error = "Not really a word!" } };
(콘텐츠를 할당했습니다).동작에 차이가 없는 JsonResult 개체의 유형 및 ContentEncoding 속성)
전개 가능 파일을 웹 호스트(IIS 7 사용)로 이동하면 firebug에 의해 응답은 예상대로(400)이지만 응답에 JSON이 없습니다(즉, 텍스트는 없습니다).선을 제거하면
Response.StatusCode = 400;
액션에 의해 JSON은 응답으로 완벽하게 형성되지만, 물론 응답 상태 코드는 200(OK)이므로 Javascript 소비와 적절한 함수 호출에 방해가 됩니다.
무슨 일이 일어나고 있는지, 어떻게 고칠지 생각나는 거 없어요?감사해요.
저도 같은 문제가 있었습니다만, (저와 마찬가지로) 정답이 코멘트에 묻히지 않게 하기 위해서, @Sprockincat의 코멘트를 재차 강조하고 싶습니다.
적어도 저는 IIS 커스텀에러에 관한 문제였기 때문에, 다음의 방법으로 해결할 수 있습니다.
Response.TrySkipIisCustomErrors = true;
@Sprockincat - 당신은 이것을 인정받아야 합니다.진단하기 어려운 문제에 대한 미묘한 수정이기 때문에 더 잘 보이게 하는 것입니다.
HttpStatusCode를 지정할 수 있는 JsonResult의 서브클래스를 만들었습니다.
public class JsonResultWithHttpStatusCode : JsonResult
{
private int _statusCode;
private string _statusDescription;
public JsonResultWithHttpStatusCode(object data, HttpStatusCode status)
{
var code = Convert.ToInt32(status);
var description = HttpWorkerRequest.GetStatusDescription(code);
Init(data, code, description);
}
public JsonResultWithHttpStatusCode(object data, int code, string description)
{
Init(data, code, description);
}
private void Init(object data, int code, string description)
{
Data = data;
_statusCode = code;
_statusDescription = description;
}
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.StatusCode = _statusCode;
context.HttpContext.Response.StatusDescription = _statusDescription;
base.ExecuteResult(context);
}
}
그런 다음 결과를 반환하면 응답에 상태 코드가 설정됩니다.테스트 결과에 따라 상태 코드를 테스트할 수도 있습니다.
ASP에서 찾으시는 분들을 위해.NET Core 를 설정할 수 있습니다.StatusCode
의 특성JsonResult
.
https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.jsonresult.statuscode
언급URL : https://stackoverflow.com/questions/17183004/return-mvc-jsonresult-plus-set-response-statuscode
'programing' 카테고리의 다른 글
SCRIPT5007: 속성 'SetReturnValue' 값을 가져올 수 없습니다. 개체가 null이거나 정의되지 않았습니다. (0) | 2023.02.28 |
---|---|
jQuery UI 자동 완료에서 결과 감지 안 함 (0) | 2023.02.28 |
WordPress 위젯의 반복 양식 필드? (0) | 2023.02.28 |
Python의 파일/스트림에서 여러 JSON 값을 쉽게 읽을 수 있는 방법은 무엇입니까? (0) | 2023.02.28 |
URL에서 Back 버튼/Hash 변경 감지 (0) | 2023.02.28 |