真的在挣扎MVC/TempData/Session /可能是IIS6类型的问题。MVC4/IIS6中的TempData/Session没有返回存储的值
我有一个简单的MVC网站 - 主控制器是这样的:
public class DemoController : Controller
{
[HttpPost]
public RedirectToRouteResult Index(SomeObject obj)
{
_someService.DoStuffWith(obj);
TempData.Add("SomeObject", obj);
return RedirectToAction("Index");
}
[HttpGet]
public ViewResult Index()
{
var obj = TempData.Peek("SomeObject") as SomeObject;
return View("Hello", obj);
}
}
因此,这是一个大型简单的POST重定向获取 - 中邮友好行动从某处提交数据,得到它,用它做东西,将它放到临时数据中,重定向到Get-friendly,再次拾取它,将用户粘贴到模型中的对象的新视图上。之前已经实现了十几次,并且从未遇到过问题,但它始终在IIS7上运行。
这与当地在cassini和本地IIS 7.5上运行时的预期完全相同。但是,只要我部署到Server 2003和IIS6,我第一次尝试访问视图中的“SomeObject”模型的任何属性时,我会得到一个空引用异常。
那么,什么人有我想:
- 我抛弃TempData的,只是推到会话[“不管”] - 用
- 我推入HttpContext.Current相同的结果。会议[“不管”] - 以相同的结果
- 我推入ControllerContext.HttpContext.Session [“不管”] - 以相同的结果
(诚然,我对它们之间的差异粗略- 从来没有 现在需要担心它)
- 我已经确保会话状态在IIS上打开。
- 我已经检查过,Asp.net会话标识符在请求之间没有变化。
- 我已经部署了2个独立的服务器,在明确地使用SessionStateBehaviour.Required
两个
- 部署到IIS7,我的本地机器外
- 使用SqlServer SessionState的
- 使用StateServer SessionState的
另外值得一提的是,本网站使用的是MVC4 RC--尽管RC功能并未在网站的这个特定部分中使用。
任何想法或意见是最受欢迎的!
谢谢。
欢迎来到会议地狱:-)由于我已经停止在我的应用程序中使用会话,我觉得我是在天堂。 – 2012-07-26 12:10:19
你有没有尝试过只使用索引器的临时数据?例如 – dougajmcdonald 2012-07-26 13:35:24
是啊 - 尝试了所有可用的排列方式,并将东西放入tempdata中 - 所有结果都完全相同。 – 2012-07-26 16:14:53