время отображения в asp.net?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcApplication3.Controllers
{

    public class HomeController : Controller
    {
        [OutputCache(Duration=10)]
        public string Index()
        {

            return DateTime.Now.ToString("T");


        }

        public ActionResult About()
        {
            return View();
        }
    }
}

Я просто пытаюсь отобразить время в asp.net mvc2. Но когда я запускаю указанную выше программу, она дает следующее исключение. Не могли бы вы сказать мне, что не так?

Ошибка сервера в приложении '/' В директиве или профиле настроек конфигурации должен быть указан атрибут 'variByParam'. Описание: во время выполнения текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Web.HttpException: в директиве или профиле параметров конфигурации должен быть указан атрибут 'varyByParam'.

Ошибка источника:

Во время выполнения текущего веб-запроса возникло необработанное исключение. Информацию о происхождении и расположении исключения можно определить с помощью приведенной ниже трассировки стека исключений.


person software    schedule 28.02.2011    source источник


Ответы (2)


Как говорится в сообщении об ошибке, вам нужно указать атрибут VaryByParam для используемого вами кеша:

[OutputCache(Duration = 10, VaryByParam = "none")]
public string Index()
{
    return DateTime.Now.ToString("T");
}

Также действия контроллера обычно должны возвращать ActionResults, а не строки:

[OutputCache(Duration = 10, VaryByParam = "none")]
public ActionResult Index()
{
    return Content(DateTime.Now.ToString("T"), "text/plain");
}
person Darin Dimitrov    schedule 28.02.2011

Рекомендуется, чтобы методы действий возвращали ActionResult, поэтому я предлагаю вам попробовать это.

[OutputCache(Duration = 10, VaryByParam="none")]
public ActionResult Temp()
{
    return Content(DateTime.Now.ToString("T"));
}

или если вы просто хотите исправить свой фрагмент, попробуйте это.

[OutputCache(Duration = 10, VaryByParam="none")]
public string Temp()
{
    return DateTime.Now.ToString("T");
}
person Bala R    schedule 28.02.2011