Модуль Http - сервер не может изменять куки после отправки заголовков HTTP

Я создал новый слой кэширования. Роль заключается в обслуживании страниц из кэша. если эта страница не находится в кеше, это позволит выполнить текущий запрос.

мой httpmodule примерно такой

  <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule" />
      <add type="myCacheModule.Class, myCacheMoldule" name="NewlyAddedmyCacheMoldule" />
      <add type="OtherModules1" name="OtherModules1" />
      <add type="OtherModules2" name="OtherModules2" />
 </modules>

мой кеш-модуль имеет такой код:

 private void ExecuteCacheLayer(HttpApplication context) {
      var httpContext = context.Context;
      var request = httpContext.Request;
      var response = httpContext.Response;
      if (CacheExists(request)) {
       var result = //method to get page from cache


       response.Write(result.ResponseBody);
       response.Flush();
       context.CompleteRequest();
      }

В то время как код выполняется нормально, я получаю следующую ошибку

Исключение: System.Web.HttpException Сообщение: сервер не может изменить файлы cookie после отправки заголовков HTTP.

Я не думаю, что есть какие-либо проблемы с моим модулем, но я думаю, что, поскольку я использую response.flush, другие вызываемые модули выдают эту ошибку.

Есть ли способ, которым я могу сказать, что если какое-либо условие соответствует в первом модуле, не выполнять ни одного из остальных?

Я знаю, что нет способа контролировать выполнение HTTPModules, и они выполняются асинхронно в настроенном порядке, я пытаюсь увидеть, есть ли решение для моей проблемы.

0 ответов

Другие вопросы по тегам