Модуль 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, и они выполняются асинхронно в настроенном порядке, я пытаюсь увидеть, есть ли решение для моей проблемы.