我有一个类似于AssemblyResourceLoader的IHttpHandler。它的作用是生成一个图像,然后将其发送回浏览器。
在AssemblyResourceLoader中有一个代码块,如下所示:
HttpCachePolicy cache = context.Response.Cache;
cache.SetCacheability(HttpCacheability.Public);
cache.VaryByParams["d"] = true;
cache.SetOmitVaryStar(true);
cache.SetExpires(DateTime.Now + TimeSpan.FromDays(365.0));
cache.SetValidUntilExpires(true);
Pair assemblyInfo = GetAssemblyInfo(assembly);
cache.SetLastModified(new DateTime((long) assemblyInfo.Second));
我已经设置了我发出与AssemblyResourceLoader完全相同的标题。我设置了Last-Modified标头,浏览器将If-Modified-Since标头发送到我的处理程序,就像使用AssemblyResourceLoader一样。问题是:我的处理程序永远不会像AssemblyResourceLoader那样返回304。我在AssemblyResourceLoader代码中找不到任何处理If-Modified-Since标头的代码,所以我不知道如何自己处理它。有谁知道ASP.Net在那里做了什么以及如何从我的处理程序中获得相同的行为?
感谢。