Bir web hizmeti (ASP.NET MVC kullanarak) yazıyorum ve destek amaçlı olarak, istekleri ve yanıtı ham, çevrimiçi olarak (örneğin HTTP dahil) mümkün olduğunca yakın günlüğe kaydetmek istiyoruz yöntem, yol, tüm üstbilgiler ve gövde) bir veritabanına ekleyin.
Emin olmadığım, bu verilerin en az 'karışık' şekilde nasıl elde edileceğidir. HttpRequest
Nesnenin tüm özelliklerini inceleyerek ve onlardan bir dize (ve benzer şekilde yanıt için) oluşturarak isteğin neye benzediğine inandığımı yeniden oluşturabilirim , ancak gerçekten gerçek istek / yanıt verilerini elde etmek istiyorum tel üzerinde gönderdi.
Filtreler, modüller vb. Gibi herhangi bir müdahale mekanizmasını kullanmaktan mutluluk duyuyorum ve çözüm IIS7'ye özgü olabilir. Ancak, yalnızca yönetilen kodda tutmayı tercih ederim.
Herhangi bir tavsiye?
Düzenleme: Ben notu HttpRequest
bir sahiptir SaveAs
diske isteği kaydedebilirsiniz yöntemi ama bu halka (bu kaydetme izin vermez oldukça neden erişilemiyor iç yardımcı yöntemler bir yük sonucu iç durumundan isteği reconstructs kullanıcı tarafından sağlanan Akış bilmiyorum). Bu yüzden nesnelerden gelen istek / yanıt metnini yeniden oluşturmak için elimden geleni yapmam gerekecek gibi görünüyor ... inilti.
Düzenleme 2: Yöntem, yol, başlıklar vb. Dahil tüm isteği söylediğimi lütfen unutmayın . Mevcut yanıtlar sadece bu bilgileri içermeyen vücut akışlarına bakmaktadır.
Edit 3: Burada kimse soru okumuyor mu? Şimdiye kadar beş cevap ve henüz hiç kimse tel üzerinden tüm ham talebi almanın bir yolunu bile ima etmiyor. Evet, çıktı akışlarını ve üstbilgileri, URL'yi ve istek nesnesinden tüm bunları yakalayabileceğimi biliyorum. Soruda zaten söyledim, bakınız:
HttpRequest nesnesinin tüm özelliklerini inceleyerek ve onlardan bir dize (ve benzer şekilde yanıt için) oluşturarak isteğin neye benzediğine inandığımı yeniden oluşturabilirim ama gerçekten gerçek istek / yanıt verisini almak istiyorum telde gönderilir.
Tüm ham verileri (başlıklar, url, http yöntemi vb. Dahil) biliyorsanız, sadece geri alınamaz. Benzer şekilde, tüm bunları ham formatta nasıl elde edeceğinizi biliyorsanız (evet, yine de yeniden yapılandırmak zorunda kalmadan başlıkları, url, http yöntemini vb. Demek istiyorum), sorduğum budur, o zaman bu çok yararlı olacaktır. Ama bana HttpRequest
/ HttpResponse
nesnelerinden yeniden yapılandırabileceğimi söylemek faydalı değil. Bunu biliyorum. Bunu zaten söyledim.
Lütfen dikkat: Herkes bunun kötü bir fikir olduğunu söylemeye başlamadan veya ölçeklenebilirliği vb. Sınırlandırmaya başlamadan önce, dağıtılmış bir ortamda daraltma, sıralı dağıtım ve yeniden oynatma mekanizmalarını da uygulayacağız, bu nedenle veritabanı günlüğü yine de gereklidir. Bunun iyi bir fikir olup olmadığı üzerine bir tartışma aramıyorum, bunun nasıl yapılabileceğini arıyorum.