У меня есть этот довольно прямой фрагмент кода ниже.Выходной кэш на стороне сервера Asp.Net получает каждый запрос (HttpHandler)
Есть несколько вещей, которые я пробовал, и я не понимаю, почему серверный кеш-сервер не работает на http://localhost. Ниже приведена последняя попытка «настроек кеша», чтобы не см. HIT на панели вывода Debug.
Это сводит меня с ума! Как предотвратить HIT ...?! Когда я открываю инструменты разработчика и проверяю Отключить кеш, я ожидаю кешированную копию на стороне сервера и не вижу HIT в области вывода Debug.
Я нахожусь в Windows 8, но даже в другой версии Windows (/ IIS Version) я не могу представить, что возможный код будет другим.
using System;
using System.Diagnostics;
using System.Net.Http;
using System.Web;
namespace WebApplication1
{
/// <summary>
/// Summary description for MyHandler
/// </summary>
public class MyHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Debug.WriteLine("HIT"+DateTime.Now.ToLongTimeString());
context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(5));
context.Response.Cache.SetCacheability(HttpCacheability.Server);
context.Response.Cache.SetValidUntilExpires(true);
context.Response.Cache.SetOmitVaryStar(true);
context.Response.Cache.VaryByParams["none"] = true;
context.Response.Cache.SetMaxAge(new TimeSpan(0, 5, 0));
// Just here for testing purposes
const string url = "http://otherserver/image.png";
using (var client = new HttpClient())
{
var task = client.GetStreamAsync(url);
task.Wait();
task.Result.CopyTo(context.Response.OutputStream);
context.ApplicationInstance.CompleteRequest();
}
}
public bool IsReusable
{
get { return true; }
}
}
}