问题描述
|
临时禁用对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