Может ли httpModule «захватывать» исходящие http-запросы от веб-API, размещенного на IIS? - PullRequest
0 голосов
/ 18 февраля 2020

Я создал тестовый проект библиотеки классов, в котором есть один класс, реализующий интерфейс IhttpModule.

У меня есть демо-проект веб-API, который размещен на моем локальном IIS и имеет метод HttpPost, который внутри использует класс, который делает исходящие запросы Http у третьих лиц.

На данный момент он работает как прелесть для входящих запросов, но я хочу отлавливать каждый запрос, который приходит и уходит из моего API. Меня не волнуют ответы.

Я уже проверил запросы, сделанные третьими лицами, и они верны.

API web.config:

<system.webServer>
  <modules>
    <add name="MyIISModule" type="IisTestProject.MyIISModule" />
  </modules>
</system.webServer>

MyIISModule.cs:

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


    private void OnBeginRequest(object sender, EventArgs e)
    {
        var app = (HttpApplication) sender;
        File.AppendAllLines("C:\\requestHeaders.txt",  new List<string>() {$"{DateTime.Now.ToOADate()}_{app.Context.Request.ToString()}" });
    }

    public void Dispose()
    {

    }

Я сделал это, чтобы я мог просто проверять всякий раз, когда происходит запрос.

Есть ли способ сделать это без изменения кода моего API и использования только моего HttpModule?

Также я обнаружил this :

Модули HTTP могут видеть только запросы, проходящие через конвейер IIS / ASP. NET, в то время как такие исходящие запросы go через Windows сокеты напрямую, а не через IIS / ASP. NET конвейер.

Есть ли способ обойти это?

...