Я отключил sessionState в своем приложении mvc2 через web.config, а также создал свой собственный контроллерзавод и фиктивный поставщик временных данных, как описано здесь:
Как отключить состояние сеанса в ASP.NET MVC?
Только я сделал так, чтобы SaveTempData генерировал исключение:
public void SaveTempData(ControllerContext controllerContext,
IDictionary<string, object> values)
{
throw new NotImplementedException(
"Cannot set tempdata, no session state is available.");
}
Я убедился, что ни один код никогда не использует ни Session, ниОбъекты TempData, но я все еще вижу, как это исключение выдается после возникновения события OnResultExecuted.Я использовал этот самый шаблон на своем сайте mvc1 и никогда не видел исключения.Любые идеи?
Если я изменю свою реализацию "SaveTempData" на это:
public void SaveTempData(ControllerContext controllerContext,
IDictionary<string, object> values)
{
if (values.Count != 0)
{
throw new NotImplementedException(
"Cannot set tempdata, no session state is available.");
}
}
Все работает как положено - я просто надеюсь узнать, почему SaveTempData вызывается вообще, когда я 'я его нигде не использую.
Обновление
Обнаружена эта статья: http://www.gregshackles.com/2010/07/asp-net-mvc-do-you-know-where-your-tempdata-is/
В которой объясняется, что ExecuteCore вызывает PossibilityLoadTempData и PossblySaveTempData вокруг действиячто и стало причиной моей проблемы.Это новое дополнение в mvc2 против mvc1?