Gia*_*los 2 asp.net-mvc asp.net-web-api
我有一个ASP.NET MVC网站,它也有WEB API和OData端点.有没有办法让网站脱机,但保持API和OData工作?
我尝试在根目录上放置App_Offline.htm,但这使得所有区域都处于脱机状态.
写一个ActionFilterAttribute
并将其注册为全局过滤器:
public class MyFilterAttribute : ActionFilterAttribute
{
private string _offlineUrl;
public MyFilterAttribute(string offlineUrl)
{
_offlineUrl = offlineUrl;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// considering you have a API controller
// and you have a Boolean app setting named BringMVCRoutesOffline
// to activate this filter form web.config
// in real world scenario you could check area or what URL
// or route data you want
if (Convert.ToBoolean(ConfigurationManager.AppSettings["BringMVCRoutesOffline"])
&& filterContext.RouteData.Values.ContainsKey("controller")
&& !filterContext.RouteData.Values["controller"]
.ToString().ToLower() == "api"
// avoiding infinite loop
&& filterContext.HttpContext.Request
.AppRelativeCurrentExecutionFilePath != _offlineUrl)
{
filterContext.Result = new RedirectResult(_offlineUrl);
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在App_Start> FilterConfig中添加:
filters.Add(new MyFilterAttribute("~/error/offline"));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
391 次 |
最近记录: |