真的在掙扎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