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

Asp.net mvc 3 在ASP.NET MVC中使用DateTime.Now作为默认路由值是否安全?,asp.net-mvc-3,asp.net-mvc-routing,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.

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

context.MapRoute(null,
                 "YardJob/{location}/{from}",
                 new { controller = "YardJob", 
                       action = "List", 
                       from = DateTime.Now });
我的问题是: 如果路由引擎使用“from”的默认路由值,控制器上的List方法是否总是使用当前日期和时间调用

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


谢谢,

注册路由的过程是在应用程序启动时执行的,因此如果您输入DateTime。现在from字段的默认参数是应用程序启动的时间,仅在AppPool回收时更改

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


查看

注册路由的过程是在应用程序启动时执行的,因此如果您输入DateTime。现在from字段的默认参数是应用程序启动的时间,仅在AppPool回收时更改

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


查看

,正如公认的答案所解释的,这是不可能的。然而,为了完整起见,以下是您将如何解决此问题:

路线:

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;
}
控制器操作:

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;
}

正如公认的答案所解释的,这是不可能的。然而,为了完整起见,以下是您将如何解决此问题:

路线:

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;
}
控制器操作:

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;
}

如果您总是打算使用DateTime。那么,为什么要在路由中传递它呢?使用该路由,from总是在路由映射中注册路由时使用DateTime,这在应用程序启动时发生。有时会提供另一个值。@Zachdev因此,这听起来很傻,但应用程序启动的频率如何?每个请求?每个请求?不,我的朋友,应用程序在应用程序池启动应用程序时启动,例如,在编译和运行应用程序的开发过程中,或在发布应用程序和应用程序池recicle的生产过程中。如果您总是打算使用DateTime。现在,为什么要在路由中传递它?使用该路由,from始终取路由在路由映射中注册时的日期时间,这在应用程序启动时发生。有时会提供一个备用值。@Zachdev因此,这听起来可能很愚蠢,但应用程序启动的频率如何?每个请求?每个请求?不,我的朋友,应用程序是在应用程序池启动应用程序时启动的,例如,在编译和运行应用程序时处于开发阶段,或者在发布应用程序和应用程序池recicle时处于生产阶段。非常感谢,帮了我一个大麻烦。非常感谢,帮了我一个大麻烦。