La journalisation HTTP brut de requête/réponse en ASP.NET MVC & IIS7

Je suis en train d'écrire un web service (à l'aide de ASP.NET MVC) et à des fins de soutien que nous aimerions être en mesure d'ouvrir une session à la demande et de la réponse d'aussi près que possible de la première, sur-le-fil format (j'.e y compris la méthode HTTP, chemin d'accès, tous les en-têtes et le corps) dans une base de données.

Ce que je ne suis pas sûr, c'est la façon de mettre la main sur ces données dans le moins de déformation de la voie. Je peux re-constituer ce que je crois à la demande de recherche comme par l'inspection de toutes les propriétés de la HttpRequest objet et la construction d'une chaîne à partir d'eux (et de même pour la réponse), mais je voudrais vraiment obtenir de la demande/réponse de données qui sont envoyés sur le réseau.

Je suis heureux d'utiliser toute interception mécanisme tels que les filtres, modules, etc. et la solution peut être spécifique à IIS7. Cependant, je préfère le garder en code managé seulement.

Toutes les recommandations?

Edit: je remarque que HttpRequest a un enregistrer sous méthode qui peut enregistrer la demande sur le disque, mais ceci reconstruit à la demande de l'état interne à l'aide d'une charge interne des méthodes d'assistance qui ne sont pas accessibles publiquement (tout à fait pourquoi cela ne permet pas de sauvegarder à un utilisateur fourni par flux je ne sais pas). Donc, ça commence à ressembler à ce que je vais faire de mon mieux pour reconstruire la demande/réponse de texte à partir des objets... gémissement.

Edit 2: Veuillez noter que j'ai dit la ensemble demande, y compris la méthode, le chemin, en-têtes, etc. Les réponses actuelles ne regarde que le corps des flux qui ne comprennent pas cette information.

Edit 3: personne Ne lire les questions ici? Cinq réponses jusqu'à présent et pourtant, pas un, même fait allusion à un moyen d'obtenir l'ensemble de la crue sur-le-fil demande. Oui, je sais que je peux capter les flux de sortie et les en-têtes et les URL et tout ça à partir de l'objet de la requête. J'ai déjà dit que, dans la question, voir:

Je peux re-constituer ce que je crois à la demande de recherche comme par l'inspection de toutes les propriétés de l'objet HttpRequest et la construction d'une chaîne à partir d'eux (et de même pour la réponse), mais je voudrais vraiment obtenir de la demande/réponse de données qui sont envoyés sur le réseau.

Si vous connaissez la complète données brutes (y compris les en-têtes, url, la méthode http, etc.) ne peut tout simplement pas être récupérés puis ce serait utile de le savoir. De même, si vous savez comment l'obtenir tous dans le format " raw " (oui, je persiste à dire y compris les en-têtes, url, la méthode http, etc.) sans avoir à reconstruire, ce qui est ce que j'ai demandé, alors que ce serait très utile. Mais me dire que je peut reconstruire à partir de la HttpRequest/HttpResponse objets n'est pas utile. Je sais qu'. Je l'ai déjà dit il.


Veuillez noter: Avant que quelqu'un commence à dire que c'est une mauvaise idée, ou à la limite de l'évolutivité, etc., nous allons également être mise en œuvre de la limitation, de livraison séquentiel et anti-replay mécanismes dans un environnement distribué, donc de la base de données de journalisation est nécessaire de toute façon. Je ne suis pas à la recherche pour une discussion de savoir si c'est une bonne idée, je suis à la recherche de la façon dont il peut être fait.

  • Non, c'est un service RESTful mis en œuvre à l'aide de ASP.NET MVC
  • Il est probablement possible de le faire à l'aide de IIS7 et un module natif - msdn.microsoft.com/en-us/library/ms694280.aspx
  • Avez-vous réussi à mettre en place cela? Juste par curiosité, avez-vous adopté une mémoire tampon de la stratégie à écrire db?
  • Projet intéressant... si vous ne finissent par le faire, avec de la solution finale?
InformationsquelleAutor Greg Beech | 2009-06-24