AssemblyResourceLoader / ASP.Net如何处理If-Modified-Since标头?

时间:2010-02-04 17:27:55

标签: asp.net http-headers

我有一个类似于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在那里做了什么以及如何从我的处理程序中获得相同的行为?

感谢。

1 个答案:

答案 0 :(得分:0)

看起来你需要自己做,但并不难:http://www.motobit.com/tips/detpg_net-last-modified/