Próbuję zwrócić kod stanu 304 niezmodyfikowany dla metody GET w kontrolerze interfejsu API sieci Web.
Jedynym sposobem, w jaki mi się udało, było coś takiego:
public class TryController : ApiController
{
public User GetUser(int userId, DateTime lastModifiedAtClient)
{
var user = new DataEntities().Users.First(p => p.Id == userId);
if (user.LastModified <= lastModifiedAtClient)
{
throw new HttpResponseException(HttpStatusCode.NotModified);
}
return user;
}
}
Problem polega na tym, że nie jest to wyjątek, po prostu nie jest modyfikowany, więc pamięć podręczna klienta jest OK. Chcę również, aby typem zwracanym był użytkownik (jak pokazują wszystkie przykłady interfejsu WWW z GET), nie zwracał HttpResponseMessage ani czegoś takiego.
new HttpResponseMessage(HttpStatusCode.NotModified)
? Nie działa?
beta
lub budujesz w nocy ?