OK,這可能只是我的無知,但我在我MVC3應用以下路線:ASP.NET MVC3應用創造壞路線值
routes.MapRoute("Directory","{aid}/{controller}/{action}/{year}/{quarter}",
new { aid = "sf", controller = "Lobbyist", action = "Index",
year = CurrentYear(), quarter = CurrentQuarter() });
在我的Global.asax.cs,我有這些兩種方法:
public static int CurrentQuarter()
{
int quarter = 0;
//...use some internal business logic to determine the value of
//'quarter' based on the current date...
return quarter;
}
public static int CurrentYear()
{
return DateTime.Now.Year;
}
此代碼的偉大工程幾乎所有的時間。在某個時間點,在我們的生產環境(運行IIS7)中,CurrentQuarter()的路徑值變爲零值,當它應該是1,2,3或4時。它在生產中工作得很好,除了那一個時間點。 IISRESET「固定」了這個問題。
我所知道的:
- 當時CurrentQuarter()的失敗,CurrentYear()仍然 恢復正常
- 的CurrentQuarter()方法不扔這將避免設定一個 例外所述「季度」可變
- 其驅動CurrentQuarter()方法中的業務邏輯的工作原理爲 和DateTime.MinValue DateTime.MaxValue
我的問題真正得到起來就是:
- 做不好調用靜態方法來生成路由值?
- 應用程序是否有可能「忘記」靜態方法的結果,並導致它返回垃圾值?應用程序池回收可以導致此問題嗎?
我有點抓住吸管在這裏!
感謝您的任何建議。
答案是「否」和「否」。在一個新的MVC項目RegisterRoutes(你的routes.MapRoute在那裏調用?)的默認Global.asax.cs是一個靜態方法,它在Application_Start上被調用。在此註冊期間,CurrentQuarter僅被調用一次。只有在請求url中不存在提供的quarter url元素值時才使用它。 – Igor