网站关闭IIS上的外部访问者维护页面

时间:2015-02-27 00:22:10

标签: asp.net iis

当我在IIS中托管的网站上进行一些主要部署时,我想建立一个网站来维护“外部”访问者。我已阅读有关在Web根目录中创建“App_Offline.htm”页面的信息。我仍然可以浏览localhost下的网站(我将登录到服务器),而通过域名浏览的访问者可以看到“关闭维护”页面吗?在我向访问者提供更改之前,我想做一些测试。

2 个答案:

答案 0 :(得分:1)

默认情况下,当您打开app_offline.htm时,asp.net会停止运行该网页。

但你可以通过global.asax上的一些编程来实现:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    HttpApplication app = (HttpApplication)sender;

    // if its not local - let see if we go offline
    if (!app.Request.IsLocal)
    {
        // the file we look now is the app_offline_alt.htm
        string cOffLineFile = HttpRuntime.AppDomainAppPath + "app_offline_alt.htm";

        // if exist on root
        if (System.IO.File.Exists(cOffLineFile))
        {
            using (var fp = System.IO.File.OpenText(cOffLineFile))
            {
                // read it and send it to the browser
                app.Response.Write(fp.ReadToEnd());
                fp.Close();
            }

            // and stop the rest of processing
            app.Response.End();
            return;
        }
    }
}

答案 1 :(得分:0)

我通过以下方式解决了这个问题:

  1. 我在web.config文件中添加了一个名为“ MaintanenceMode”的键

<appSettings> <add key="MaintenanceMode" value="true" /> </appSettings>

  1. 我添加了动作结果并在家庭控制器中查看

public class HomeController : BaseController { public ActionResult Offline() { return View("Offline"); } }

  1. 我将Global.asax.cs文件更改为MaintenanceMode键,并将所有外部请求(图像,css和js文件请求除外)重定向到离线页面

protected void Application_BeginRequest() { if (WebConfigurationManager.AppSettings["MaintenanceMode"] == "true") { if (!Request.IsLocal && !Request.Path.Contains("bundles") && !Request.Path.Contains("Content")) { HttpContext.Current.RewritePath("/home/offline"); } } }