Я пишу веб-службу (використовую ASP.NET MVC) і для цілей підтримки ми хотіли б мати можливість записувати запити та відповіді максимально наближеними до необмеженого бездротового формату (тобто, включаючи HTTP метод, шлях, усі заголовки та тіло) в базу даних.
Я не впевнений у тому, як отримати ці дані в найменшій мірі. Я можу повторно скласти те, на що я вважаю, що виглядає запит, перевіривши всі властивості HttpRequest
об'єкта та створивши з них рядок (і аналогічно для відповіді), але я дуже хотів би отримати фактичні дані запиту / відповіді, які є відправляється на дріт.
Я радий використовувати будь-який механізм перехоплення, такий як фільтри, модулі тощо, і рішення може бути специфічним для IIS7. Однак я вважаю за краще зберігати його лише в керованому коді.
Будь-які рекомендації?
Редагувати: зауважу, що HttpRequest
маєSaveAs
метод, який може зберігати запит на диск, але це реконструює запит із внутрішнього стану, використовуючи набір внутрішніх допоміжних методів, до яких не можна отримати доступ публічно (саме тому це не дозволяє зберегти на користувачеві потік я не знаю). Тож це починає виглядати так, що мені доведеться зробити все можливе, щоб реконструювати текст запиту / відповіді з об’єктів ... стогін.
Редагування 2: Зверніть увагу, що я сказав, що весь запит, включаючи метод, шлях, заголовки тощо. Поточні відповіді дивляться лише на потоки тіла, які не містять цієї інформації.
Правка 3: Тут ніхто не читає питань? Наразі п’ять відповідей, але ще жодна навіть не натякає на те, щоб отримати цілий вихідний запит. Так, я знаю, що можу зафіксувати вихідні потоки, заголовки та URL-адресу та все те, що є в об'єкт запиту. Я вже говорив, що у запитанні див .:
Я можу повторно скласти те, на що я вважаю, що виглядає запит, перевіривши всі властивості об’єкта HttpRequest та створивши з них рядок (і аналогічно для відповіді), але я дуже хотів би отримати фактичні дані запиту / відповіді. що надсилається по дроту.
Якщо ви знаєте, що цілі вихідні дані (включаючи заголовки, URL, метод http тощо) просто неможливо отримати, то це було б корисно знати. Точно так само, якщо ви знаєте, як отримати все це у необробленому форматі (так, я все одно маю на увазі заголовки, URL, метод http тощо), не реконструюючи це, про що я і запитав, то це було б дуже корисно. Але говорити мені, що я можу реконструювати це з HttpRequest
/ HttpResponse
об’єктів, не корисно. Я це знаю. Я вже це сказав.
Зверніть увагу: Перш ніж хтось почне говорити, що це погана ідея, або обмежить масштабованість тощо, ми також будемо впроваджувати механізми дроселювання, послідовної доставки та проти повторного відтворення у розподіленому середовищі, тому реєстрація баз даних у будь-якому разі потрібна. Я не шукаю дискусії про те, чи це хороша ідея, я шукаю, як це можна зробити.