需要暂时禁用对ASP.Net MVC 3网站的访问

问题描述

| 临时禁用对ASP.Net MVC 3网站的访问的最简单方法是什么? 访问仅限于特定的IP或本地主机 所有外部用户都收到以下文本:\“ Matrix reloaded ... \”或\“ Under Construction \”。 谢谢!     

解决方法

将app_offline.htm电子邮件添加到根文件夹,该站点将无法访问,并且所请求的任何URL \都将显示app_offline.htm内容。 编辑:没有注意到能​​够在本地访问的功能。从外部用户那里删除站点的一种方法是向站点添加http模块。最简单的方法是将模块直接放在app_code文件夹中。就像是:
using System;
using System.Web;

namespace YourNameSpace
{
 public class BlockRemoteModule : IHttpModule 
 {
  public BlockRemoteModule() {}

  public void Dispose() {}

  public void Init(HttpApplication application) 
  {
   application.BeginRequest += new EventHandler(OnBeginRequest);
  }

  public void OnBeginRequest(object sender,EventArgs e)
  {
    if (HttpContext.Current.Request.ServerVariables[\"LOCAL_ADDR\"] != HttpContext.Current.Request.ServerVariables[\"REMOTE_ADDR\"])
    {
        HttpContext.Current.Response.StatusCode = 503;
        HttpContext.Current.Response.Write(\"Under Construction.\");
        HttpContext.Current.Response.End();
    }
  }
 }
}
然后在web.config中注册它(假设iis7 +)
<system.webServer>
    <modules runAllManagedModulesForAllRequests=\"true\">
        <add name=\"BlockRemoteModule\" type=\"YourNameSpace.BlockRemoteModule,App_code\" />
    </modules>
</system.webServer>
    ,您可以尝试使用动作过滤器,这样您就可以选择无法访问哪些动作/控制器。此操作筛选器仅可以检查某些appSetting值,如果将其设置为true / false,它将重定向到维护视图下。     ,您应该在应用程序服务器(在这种情况下为IIS)中配置重定向: http://technet.microsoft.com/zh-CN/library/cc732969(WS.10).aspx