5

ASP.NET MVC 응용 프로그램 컨트롤러에서 요청을 처리하고 상태 코드가 200 인 특정 뷰를 반환합니다. Application_EndRequest에 도달하면 이미 204입니다. 내보기의 응답 내용이 정확하고 응답에 있으므로 상태 코드 만 수정됩니다. 다음은 예입니다 (상태는 204이지만 내용이 있습니다) :ASP.NET 컨트롤러 동작이 상태 코드 200을 반환하지만 EndRequest는 204 (NoContent)가됩니다.

HTTP/1.1 204 No Content 
Cache-Control: no-cache 
Pragma: no-cache 
Content-Type: text/html; charset=utf-8 
Expires: -1 
Vary: User-Agent 
Access-Control-Allow-Origin: * 
Date: Fri, 24 Nov 2017 22:12:17 GMT 

그것은 응답 코드를 수정 ActionFilter이 될 수 있지만 않는 특정 필터를 찾을 수 없습니다 그것.

내 응답의 상태 코드가 잠재적으로 수정 될 수 있으며 특정 요청에서 작동하는 모든 필터를 어떻게 디버깅 할 수 있습니까?

+0

일부 조치/결과 필터? – Shyju

+0

액션 필터가 많이 있는데 전 세계적으로 컨트롤러/액션 레벨에 적용된 모든 필터를 비활성화했습니다 - 동일한 결과 일 수 있습니다. 따라서 일부 필터가 암시 적으로 적용되므로 요청 처리에 참여하는 모든 필터를 알 필요가 있습니다. . –

+0

프록시가 사용자와의 사이에 상태 코드를 수정할 수 있습니까? 내 작품에서 그는 헤더를 수정하지 않기 위해 아파치 프록시에 추가해야했다. –

답변

1

문제가 발견되었습니다. 범용 컨트롤러 동작 처리의 일부로 실행 된 Child Action입니다. 200 상태에 내용을 더하여 상위 컨트롤러 동작이 실행될 때 부모 동작의 일부로 실행되는 Child ActionNoContent과 상태 204을 반환합니다. 응답을 수정하여 204 상태와 기본 동작에 의해 렌더링 된 콘텐츠를 갖습니다.

해결 방법은 Child Action이 하위 동작으로 작동하며 전체 응답을 수정하지 않는 것입니다.

1

시스템에서 모든 것이 잘된다는 의미에서 올바르지 만, 데이터 (내용)가 올바르지 않습니다.

예를 들어, Employee 테이블에는 id가 1과 2 인 두 개의 레코드가 있습니다. ef를 사용하여 id = 3 인 레코드를 업데이트하면이 오류가 발생합니다.

당신이해야 할 일은 .. 귀하의 데이터로 적절한 검증을하십시오.

+0

데이터가 정확합니다. 데이터가 존재하고 컨트롤러가 반환 한 상태가 정확합니다 (200), 파이프 라인 실행 후 asp.net 응용 프로그램이 반환 한 상태가 올바르지 않습니다 (204) –