Tôi đang viết một dịch vụ web (sử dụng ASP.NET MVC) và cho các mục đích hỗ trợ, chúng tôi muốn có thể ghi nhật ký các yêu cầu và phản hồi gần nhất có thể với định dạng thô, trực tuyến (bao gồm cả HTTP phương thức, đường dẫn, tất cả các tiêu đề và phần thân) vào cơ sở dữ liệu.
Điều tôi không chắc chắn là làm thế nào để có được dữ liệu này theo cách ít bị sai lệch nhất. Tôi có thể tạo lại những gì tôi tin rằng yêu cầu trông giống như bằng cách kiểm tra tất cả các thuộc tính của HttpRequest
đối tượng và tạo chuỗi từ chúng (và tương tự cho phản hồi) nhưng tôi thực sự muốn giữ dữ liệu yêu cầu / phản hồi thực tế gửi trên dây.
Tôi rất vui khi sử dụng bất kỳ cơ chế chặn nào như bộ lọc, mô-đun, v.v. và giải pháp có thể dành riêng cho IIS7. Tuy nhiên, tôi chỉ muốn giữ nó trong mã được quản lý.
Có khuyến nghị nào không?
Chỉnh sửa: Tôi lưu ý rằng HttpRequest
có một SaveAs
phương thức có thể lưu yêu cầu vào đĩa nhưng điều này tái tạo lại yêu cầu từ trạng thái bên trong bằng cách sử dụng tải các phương thức của trình trợ giúp nội bộ không thể truy cập công khai (hoàn toàn tại sao điều này không cho phép lưu vào người dùng cung cấp stream tôi không biết). Vì vậy, nó bắt đầu giống như tôi sẽ phải cố gắng hết sức để xây dựng lại văn bản yêu cầu / phản hồi từ các đối tượng ... than thở.
Chỉnh sửa 2: Xin lưu ý rằng tôi đã nói toàn bộ yêu cầu bao gồm phương thức, đường dẫn, tiêu đề, v.v ... Các phản hồi hiện tại chỉ nhìn vào các luồng cơ thể không bao gồm thông tin này.
Chỉnh sửa 3: Không ai đọc câu hỏi quanh đây? Năm câu trả lời cho đến nay và thậm chí không một gợi ý nào về cách nhận được toàn bộ yêu cầu trực tuyến. Có, tôi biết tôi có thể nắm bắt các luồng đầu ra, các tiêu đề và URL và tất cả những thứ đó từ đối tượng yêu cầu. Tôi đã nói rằng trong câu hỏi, xem:
Tôi có thể tạo lại những gì tôi tin rằng yêu cầu trông giống như bằng cách kiểm tra tất cả các thuộc tính của đối tượng HttpRequest và xây dựng một chuỗi từ chúng (và tương tự cho phản hồi) nhưng tôi thực sự muốn nắm giữ dữ liệu yêu cầu / phản hồi thực tế đó là gửi trên dây.
Nếu bạn biết toàn bộ dữ liệu thô (bao gồm các tiêu đề, url, phương thức http, v.v.) đơn giản là không thể truy xuất được thì điều đó sẽ hữu ích khi biết. Tương tự như vậy nếu bạn biết cách lấy tất cả ở định dạng thô (vâng, tôi vẫn có nghĩa là bao gồm các tiêu đề, url, phương thức http, v.v.) mà không phải xây dựng lại, đó là những gì tôi đã hỏi, thì điều đó sẽ rất hữu ích. Nhưng nói với tôi rằng tôi có thể xây dựng lại nó từ HttpRequest
/ HttpResponse
các đối tượng là không hữu ích. Tôi biết điều đó. Tôi đã nói rồi.
Xin lưu ý: Trước khi bất kỳ ai bắt đầu nói rằng đây là một ý tưởng tồi hoặc sẽ hạn chế khả năng mở rộng, v.v., chúng tôi cũng sẽ thực hiện các cơ chế điều tiết, phân phối tuần tự và chống phát lại trong một môi trường phân tán, vì vậy dù sao thì cũng cần phải đăng nhập cơ sở dữ liệu. Tôi không tìm kiếm một cuộc thảo luận về việc liệu đây có phải là một ý tưởng hay không, tôi đang tìm kiếm làm thế nào nó có thể được thực hiện.