@overvolt

Как обрабатывает запросы управляемый модуль для IIS 8 на базе IHttpModule?

Набросал тестовый пример для наглядности:
public class IISModule : IHttpModule
{
    List<string> Log;
   
    public void Init(HttpApplication app)
    {
        Log = new List<string>();
        app.BeginRequest += new EventHandler(app_BeginRequest);
    }

    public void Dispose() { }
   
   private void app_BeginRequest(object source, EventArgs e)
   {
        HttpApplication application = (HttpApplication)source;
        HttpRequest request = application.Context.Request;
            
        Log.Add(DateTime.Now.ToString() + "\t" + request.HttpMethod + "\t" + request.RawUrl);
   }
}

Вопрос в следующем: будет ли app_BeginRequest вызываться последовательно для каждого запроса при одновременном поступлении нескольких запросов? Если это так, то следовательно не стоит беспокоиться о добавлении элементов в список Log и менять List на ConcurenceBag, т.к. это действие не может выполняться одновременно в нескольких потоках? Правильно ли я понял принцип работы IIS: он все запросы ставит в очередь и последовательно выбирает из неё по одному запросу и обрабатывает его с помощью app_BeginRequest?
  • Вопрос задан
  • 2507 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы