IIS 7 Тело запроса журнала - PullRequest
       7

IIS 7 Тело запроса журнала

28 голосов
/ 19 августа 2010

Мне нужно зарегистрировать полезную нагрузку пост-запроса для запросов к IIS. Можно ли настроить ведение журнала полезных нагрузок после запроса с существующими модулями ведения журнала и расширенными журналами в IIS 7.5 или кто-нибудь может направить меня на любые пользовательские модули, которые позволят мне регистрировать полезную нагрузку после публикации.

Ответы [ 3 ]

18 голосов
/ 01 февраля 2012

Это действительно может быть сделано, согласно https://serverfault.com/a/90965

IIS регистрирует только записи строки запроса и информации заголовка без любые данные POST.

Если вы используете IIS7, вы можете включить трассировку Failed Request для код состояния 200. Это позволит записать все данные, и вы можете выбрать какой тип данных включить.

4 голосов
/ 14 декабря 2012

Мне удалось создать текстовый файл для моих запросов, который содержал весь запрос (заголовки и ответ), я использовал его только для регистрации определенных почтовых запросов:

protected void Application_BeginRequest(Object Sender, EventArgs e)
{
    string uniqueid = Guid.NewGuid().ToString();
    string logfile = String.Format("C:\\path\\to\\folder\\requests\\{0}.txt", uniqueid);
    Request.SaveAs(logfile, true);
}

Надеюсь, это поможет вам!

0 голосов
/ 31 октября 2017

Вот код пользовательского модуля HTTP, который мы используем для регистрации данных запроса HTTP POST.

using System;
using System.Web;

namespace MySolution.HttpModules
{
    public class HttpPOSTLogger : IHttpModule
    {

        public void Dispose()
        {
        }

        public void Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
        }

        private void context_BeginRequest(object sender, EventArgs e)
        {
            if (sender != null && sender is HttpApplication)
            {
                var request = (sender as HttpApplication).Request;
                var response = (sender as HttpApplication).Response;

                if (request != null && response != null && request.HttpMethod.ToUpper() == "POST")
                {
                    var body = HttpUtility.UrlDecode(request.Form.ToString());
                    if (!string.IsNullOrWhiteSpace(body))
                        response.AppendToLog(body);
                }
            }
        }

    }
}

Не забудьте зарегистрировать его в web.config вашего приложения.

Использовать раздел system.WebServer для интегрированной модели IIS

<system.webServer>
    <modules>
      <add name="HttpPOSTLogger" type="MySolution.HttpModules.HttpPOSTLogger, MySolution.HttpModules" />
    </modules>
</system.webServer>

Использовать систему.веб-раздел для IIS Classic Model

<system.web>
    <httpModules>
        <add name="HttpPOSTLogger" type="MySolution.HttpModules.HttpPOSTLogger, MySolution.HttpModules"/>
    </httpModules>
</system.web>

Журнал IIS Перед применением модуля:

::1, -, 10/31/2017, 10:53:20, W3SVC1, machine-name, ::1, 5, 681, 662, 200, 0, POST, /MySolution/MyService.svc/MyMethod, -,

Журнал IIS После применения модуля:

::1, -, 10/31/2017, 10:53:20, W3SVC1, machine-name, ::1, 5, 681, 662, 200, 0, POST, /MySolution/MyService.svc/MyMethod, {"model":{"Platform":"Mobile","EntityID":"420003"}},

Полный текст статьи:

https://www.codeproject.com/Tips/1213108/HttpModule-for-logging-HTTP-POST-data-in-IIS-Log

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...