Я создал тестовый проект библиотеки классов, в котором есть один класс, реализующий интерфейс 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 конвейер.
Есть ли способ обойти это?