【发布时间】:2017-09-16 20:17:35
【问题描述】:
我的任务:我想根据“Web.Config”中的特定键消除特定的 url “Controller/Action” 我尝试制作自定义过滤器属性,但我发现“OnActionExecuting 导致无限循环”的另一个问题 ",实际上我被这个解决方案 "ASP.NET MVC 3 OnActionExecuting causes infinite loop" 说服了,但我仍然找不到解决方案。
Web.Config:
<add key="Delegation" value="true" />
我的控制器:我检查登录用户是否被授权,然后检查此用户是否有资格使用此控制器。
[MyAuthorize("EdgeEngineGroups")]
[Edge.Models.FilterAttribute]
我的过滤类:
public class FilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string Delegation = "";
Delegation = System.Configuration.ConfigurationManager.AppSettings["Delegation"].ToString();
if (string.IsNullOrEmpty(Delegation) != null)
{
if(Delegation.ToLower() == "true")
{
var controllerName = filterContext.RouteData.Values["controller"];
var actionName = filterContext.RouteData.Values["action"];
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary{{ "controller", controllerName },
{ "action", actionName }
});
}
else
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary{{ "controller", "AccessDenied" },
{ "action", "NotFound" }
});
}
}
else
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary{{ "controller", "AccessDenied" },
{ "action", "NotFound" }
});
}
base.OnActionExecuting(filterContext);
}
}
当key为“false”时它可以正常工作,它会重定向到未找到的页面,但是当key为true时,它会重定向到我的控制器但每次都会找到filter属性。
我想知道是否有解决此错误的方法,或主要任务的其他解决方案。
【问题讨论】:
标签: asp.net-mvc custom-attributes