Реализуйте объект System.Web.Caching.Cache в контроллере для кэширования конкретного запроса. - PullRequest
2 голосов
/ 29 марта 2010

Правильно ли реализовать мой кеширующий объект в контроллере следующим образом:

public class HomeController : BaseController
{
    public static Cache cachingControl = new Cache();

...

И я использую это так:

public ActionResult Home()
{
    IndexViewData view = new IndexViewData();
    view.UserId = UserId;

if (cachingControl.Get("viewHome") != null) {
    view = (IndexViewData)cachingControl.Get("viewHome");
} else {
    view.allAdsList = AllAds(5000, 0);

    if (Request.QueryString["voirTous"] != null)
        view.loadGeneral(true);
    else
        view.loadGeneral(false);

    cachingControl.Insert("viewHome", view);
}

view.adsList = SetupSearch(5, false, 0);

return View(view);

}

Но когда я звоню по этой линии:

if (cachingControl.Get("viewHome") != null) {

Они бросают мне ошибку

*

NullErrorException 1017 *

Но я знаю, что это может быть нулевым, поэтому я поставил это условие на

У вас есть альтернатива или советы для меня, спасибо!

П.С .: Я знаю, что код странный: P, но я должен его поддерживать ...

1 Ответ

4 голосов
/ 29 марта 2010

Объект System.Web.Caching.Cache уже доступен для вас, добавив его в контроллер:

this.HttpContext.Cache

Это уже встроенный кеш, который также доступен в веб-формах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...