2013-03-14 50 views
1

我對.NET框架4.0版運行在我的ASP.NET MVC 3項目的區塊登記如下:在ASP.NET MVC中使用DateTime.Now作爲默認路由值是否安全?

context.MapRoute(null, 
       "YardJob/{location}/{from}", 
       new { controller = "YardJob", 
         action = "List", 
         from = DateTime.Now }); 

我的問題是: 如果路由引擎使用的'默認路由值從'開始,控制器上的List方法將始終使用當前日期和時間調用?

路由引擎中是否存在可能導致默認路由值在請求之間重用的緩存?

感謝,

+0

如果你想一直使用DateTime.Now,爲什麼在路線中傳遞它? – glosrob 2013-03-14 17:03:44

+0

使用該路由時,始終採用路由映射中路由註冊時刻的DateTime,這發生在應用程序啓動時。 – 2013-03-14 17:09:20

+1

有時會提供替代值。 – GemCer 2013-03-14 17:10:24

回答

0

登記的路由的處理被執行時,應用程序啓動,因此,如果你把DateTime.Now從字段的默認參數將是一次應用程序啓動時,改變只有當應用程序池回收

當應用程序啓動? 當請求ASP.NET應用程序中的第一個資源(如頁面)時。 Global.asax中的Application_Start方法在應用程序的生命週期中只調用一次。您可以使用此方法執行啓動任務,例如將數據加載到緩存中並初始化靜態值。

退房的life cicle

+0

非常感謝,爲我節省了很多頭痛。 – GemCer 2013-03-14 17:43:54

0

作爲公認的答案解釋說,這是不可能的。然而,爲了完整起見,這裏是你將如何解決此問題:

路線:

context.MapRoute(null, 
    "YardJob/{location}/{from}", 
    new { controller = "YardJob", 
    action = "List", 
    from = UrlParameter.Optional } 
); 

控制器動作:

public ActionResult List (string location, DateTime from) 
{ 
    if (from == null) 
     from = DateTime.Now; 
}