Для того, чтобы вручную прикреплять к ответу сервера заголовки ETag и Last Modified, например в каком-нибудь HttpHandler, достаточно добавить лишь несколько строк кода:
где context — это HttpContext (или HttpContext.Current), а request — это HttpContext.Request (или HttpContext.Current.Request).
Решение было найдено здесь.
Если вдруг появится проблема с генерацией ETag, например возникнет HttpException: Unable to generate etag from dependencies. One of the dependencies couldn't generate a unique id, перед добавлением заголовков добавьте Thread.Sleep(10). Из-за чего возникает такое исключение, точно не известно. Решение было найдено здесь.
context.Response.AddFileDependency(request.PhysicalPath);
context.Response.Cache.SetLastModifiedFromFileDependencies();
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetETagFromFileDependencies();
где context — это HttpContext (или HttpContext.Current), а request — это HttpContext.Request (или HttpContext.Current.Request).
Решение было найдено здесь.
Если вдруг появится проблема с генерацией ETag, например возникнет HttpException: Unable to generate etag from dependencies. One of the dependencies couldn't generate a unique id, перед добавлением заголовков добавьте Thread.Sleep(10). Из-за чего возникает такое исключение, точно не известно. Решение было найдено здесь.