无法使用RewritePath

时间:2017-12-27 19:32:36

标签: c# asp.net-mvc global-asax

当我们进入定义的维护窗口(在Start DateTime和End DateTime之间)时,我想重定向到维护屏幕

在我的Global.asax.cs文件中:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    var maintStart = Convert.ToDateTime(CommonUtilities.GetAppConfigCredential("MaintenanceStartDateTime"));
    var maintEnd = Convert.ToDateTime(CommonUtilities.GetAppConfigCredential("MaintenanceEndDateTime"));
    DateTime nw = DateTime.Now;

    if (maintStart < nw && nw < maintEnd)
    {
        HttpContext.Current.RewritePath("MaintenancePage");
    }
}

如果我在维护窗口之外启动我的应用程序,然后等到窗口启动DateTime(或只是更改配置),我会在下一个请求时被重定向到维护屏幕。但是,如果我尝试在维护窗口期间启动我的应用程序,则会出现以下错误:

Server Error in '/' Application.
Runtime Error
Description: An exception occurred while processing your request. Additionally, another exception occurred while executing the custom error page for the first exception. The request has been terminated. 

不确定如何调试,或者我的下一步应该是什么。

修改

如果我在维护窗口中启动我的应用程序,我需要:

HttpContext.Current.RewritePath("Home/MaintenancePage");

使其正常工作。

如果我在维护窗口之外启动我的应用程序,那么等到维护窗口开始时间,我需要:

HttpContext.Current.RewritePath("MaintenancePage");

使其正常工作。

EDIT2:

忘了提,我有这个:

public ActionResult MaintenancePage()
{
    return View();
}
在我的HomeController中

我忘了提到维护页面位于Views / Home文件夹中。

1 个答案:

答案 0 :(得分:0)

在我的Global.asax.cs文件中,在Application_BeginRequest中,这是正确的语句,具有正确的路径:

HttpContext.Current.RewritePath("/Home/MaintenancePage");