Anw*_*dra 10 asp.net-mvc maintenance asp.net-mvc-3
我知道我们可以简单地使用app_offline.htm文件来执行此操作.
但是如果我的IP是1.2.3.4(例如),我希望能够访问该网站,以便我可以进行最终测试.
if( IpAddress != "1.2.3.4" )
{
return Redirect( offlinePageUrl );
}
Run Code Online (Sandbox Code Playgroud)
我们如何在ASP.NET MVC 3中实现它?
Ric*_*ard 15
您可以使用带有RouteConstraint和IP检查的catch-all路由:
确保首先放置离线路线.
routes.MapRoute("Offline", "{controller}/{action}/{id}",
new
{
action = "Offline",
controller = "Home",
id = UrlParameter.Optional
},
new { constraint = new OfflineRouteConstraint() });
Run Code Online (Sandbox Code Playgroud)
和约束代码:
public class OfflineRouteConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
// return IpAddress != "1.2.3.4";
}
}
Run Code Online (Sandbox Code Playgroud)
小智 14
Per Max的建议是实际的实施.
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CheckForDownPage());
}
//the rest of your global asax
//....
}
public sealed class CheckForDownPage : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var path = System.Web.Hosting.HostingEnvironment.MapPath("~/Down.htm");
if (System.IO.File.Exists(path) && IpAddress != "1.2.3.4")
{
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.Redirect("~/Down.htm");
return;
}
base.OnActionExecuting(filterContext);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11006 次 |
| 最近记录: |