2017-11-17 79 views
5

Trong bộ điều khiển ứng dụng ASP.NET MVC của tôi xử lý yêu cầu và trả về một dạng xem cụ thể với mã trạng thái 200. Khi đến được Application_EndRequest, nó đã là 204. Nội dung phản hồi của chế độ xem của tôi là chính xác và nằm trong phản hồi, vì vậy chỉ có mã trạng thái được sửa đổi. Dưới đây là một ví dụ (tình trạng này là 204 nhưng nội dung là có):Hành động điều khiển ASP.NET trả về mã trạng thái 200 nhưng EndRequest có nó là 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 

Nó có thể là một ActionFilter sửa đổi mã phản ứng nhưng tôi đã không thể tìm thấy một bộ lọc cụ thể mà không nó.

Điều gì có thể sửa đổi mã trạng thái của phản hồi của tôi và cách tôi có thể gỡ lỗi tất cả các bộ lọc hoạt động trên một yêu cầu nhất định?

+0

Một số bộ lọc hành động/kết quả? – Shyju

+0

có một loạt các bộ lọc hành động, tôi đã vô hiệu hóa tất cả các bộ lọc được áp dụng trên toàn cầu và ở cấp độ điều khiển/hành động - cùng một kết quả, có thể một số bộ lọc được áp dụng ngầm, do đó tôi cần một cách để biết tất cả các bộ lọc tham gia xử lý yêu cầu . –

+0

Có thể có một proxy giữa bạn và sửa đổi mã trạng thái không? Tại công việc của tôi, ông đã phải thêm vào proxy apache của chúng tôi không phải để sửa đổi các tiêu đề. –

Trả lời

1

Sự cố đã được tìm thấy. Thủ phạm là Child Action được thực hiện như một phần của quá trình xử lý tác vụ bộ điều khiển gốc. Khi hành động điều khiển chính được thực thi với trạng thái 200 cộng với nội dung, Child Action, được thực hiện như một phần của hành động gốc, trả về NoContent và trạng thái 204. Nó sửa đổi đáp ứng để có trạng thái 204 cộng với nội dung được hiển thị bởi hành động chính.

Khắc phục là đảm bảo rằng Child Action chỉ hoạt động như một hành động con và không sửa đổi toàn bộ phản hồi.

1

Chính xác theo cách có nghĩa là mọi thứ đều ổn với hệ thống, điều gì đó không đúng với dữ liệu (nội dung).

Ví dụ, bảng nhân viên có hai bản ghi có id 1 và 2. Nếu bạn cập nhật bản ghi có id = 3 bằng ef, bạn sẽ gặp phải lỗi này.

Những gì bạn cần làm là .. thực hiện xác thực hợp lệ với dữ liệu của bạn.

+0

dữ liệu là chính xác, dữ liệu có mặt, trạng thái được trả về bởi một bộ điều khiển là chính xác (200), trạng thái trả về bởi ứng dụng asp.net sau khi thực hiện đường ống không chính xác (204) –

Các vấn đề liên quan