Asp.net mvc 3 在ASP.NET MVC中使用DateTime.Now作为默认路由值是否安全?
我在.NET Framework v4.0上运行的ASP.NET MVC 3项目的注册区域中有以下内容: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.
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时处于生产阶段。非常感谢,帮了我一个大麻烦。非常感谢,帮了我一个大麻烦。