我试图弄清楚为什么HttpRuntime.Cache
当控制器操作被调用时我的集合总是空的$.ajax
?在正常调用的操作中,一切正常,我可以从Cache
. 也许由 AJAX 调用的动作有一些不同的生命周期并且Cache
集合还没有准备好?这是我的示例代码:
行动:
[HttpPost]
public PartialViewResult SomeAjaxAction()
{
// when receive ajax request HttpRuntime.Cache is always empty, but it shouldn't be
SomeType item = HttpRuntime.Cache.Get("cache_key") as SomeType;
return PartialView("SomeAjaxActionView", item);
}
调用:
$.ajax({
type: 'POST',
url: '/controller/SomeAjaxAction/',
success: function (response) {
alert(response);
}
});
有什么方法可以修复它,例如通过自定义操作过滤器?
回答
好的,我在这里找到了答案:在对 Asp.net MVC 操作进行 ajax 调用时访问会话所以我改进了我的代码,base.HttpRuntime.Cache.Get("key")
它按预期工作!