在ASP.NET MVC中使用DateTime.Now作为默认路由值是否安全?

时间:2013-03-14 16:44:12

标签: asp.net-mvc-3 asp.net-mvc-routing

我在.NET Framework v4.0上运行的ASP.NET MVC 3项目的区域注册中有以下内容:

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

我的问题是: 如果路由引擎使用'from'的默认路由值,那么控制器上的List方法是否总是用当前日期和时间调用?

路由引擎中是否存在可能导致在请求之间重用默认路由值的缓存?

谢谢,

2 个答案:

答案 0 :(得分:0)

在应用程序启动时执行注册路由的过程,因此如果您放置DateTime.Now,则from字段的默认参数将是应用程序启动的时间,仅在AppPool回收时更改

申请开始时? 当请求ASP.NET应用程序中的第一个资源(如页面)时。 Global.asax中的Application_Start方法在应用程序的生命周期中仅被调用一次。您可以使用此方法执行启动任务,例如将数据加载到缓存中以及初始化静态值。

查看life cicle

答案 1 :(得分: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;
}