Domanda

ASP.NET MVC 3.0, IIS 7, .NET 4

Ho un'azione che restituisce i dati che cambiano raramente (quasi statico).

C'è un modo semplice per:

  1. ritorno 304 "non modificato" dall'azione;
  2. includono "Last-Modified" time stamp nella risposta.

Io uso return Content('my data'); per il risultato azione.

In sostanza voglio un modo semplice per fare ciò che è parlato in questo articolo: http://weblogs.asp.net/jeff/archive/2009/07/01/304-your-images-from-a-database.aspx

È stato utile?

Soluzione

(molto!) Risposta in ritardo, ma questa domanda si apre vicino alla parte superiore nei risultati dei motori di ricerca in modo che potrebbe essere utile in futuro le persone che atterrano qui.

Alternativa per la parte 1:

return new HttpStatusCodeResult(304, "Not Modified");

Altri suggerimenti

Whats wrong with this for 304?

        Response.StatusCode = 304;
        Response.StatusDescription = "Not Modified";
        return Content(String.Empty);

and this for LastModified:

        Response.Cache.SetLastModified(DateTime.Now);

Or maybe just create a 'Not Modified' Filter.

use the material provided, you can build a small utility function in your controller

protected bool CheckStatus304(DateTime lastModified)
{
    //http://weblogs.asp.net/jeff/304-your-images-from-a-database
    if (!String.IsNullOrEmpty(Request.Headers["If-Modified-Since"]))
    {
        CultureInfo provider = CultureInfo.InvariantCulture;
        var lastMod = DateTime.ParseExact(Request.Headers["If-Modified-Since"], "r", provider).ToLocalTime();
        if (lastMod == lastModified.AddMilliseconds(-lastModified.Millisecond))
        {
            Response.StatusCode = 304;
            Response.StatusDescription = "Not Modified";
            return true;
        }
    }

    Response.Cache.SetCacheability(HttpCacheability.Public);
    Response.Cache.SetLastModified(lastModified);

    return false;
}

then use it like this:

if (CheckStatus304(image.CreatedDate)) return Content(string.Empty);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top