private void PreventPageFromBeingCached(AuthorizationContext filterContext)
{
var cachePolicy = filterContext.HttpContext.Response.Cache;
cachePolicy.SetProxyMaxAge(new TimeSpan(0));
}
私が尋ねる理由は、もともとカスタムに次のコードがあったからですAuthorizeAttribute
。
private void PreventPageFromBeingCached(AuthorizationContext filterContext)
{
var cachePolicy = filterContext.HttpContext.Response.Cache;
cachePolicy.SetProxyMaxAge(new TimeSpan(0));
cachePolicy.AddValidationCallback(CacheValidateHandler, null);
}
protected void CacheValidateHandler(
HttpContext context, object data, ref HttpValidationStatus validationStatus)
{
//todo validationStatus = OnCacheAuthorization(new HttpContextWrapper(context));
}
私は基本的に、このコードを StackOverflow の回答から少し前に貼り付けました。その後、このロジックをIAuthorizationFilter
.
問題は、インターフェイスに切り替えることで、AuthorizeAttribute
の の実装が失われたことですOnCacheAuthorization
。ドキュメントによると、OnCacheAuthorization
「キャッシュモジュールが承認を要求したときに呼び出されます」。これでは、このメソッドを実装するために何をする必要があるか、そもそもコールバックが必要かどうかさえわかりません。
質問
PreventPageFromBeingCached
2行のコードだけで実際にページがキャッシュされないようにしますか、それとも と メソッド (および の実装) も含める必要がありcachePolicy.AddValidationCallback(CacheValidateHandler, null);
ますCacheValidateHandler()
かOnCacheAuthorization()
?- 追加のコードが必要な場合、正確には何をしますか?
- すべてが間違っている場合、ページがキャッシュされないようにするにはどうすればよいですか?