我在全球范围内使用RequireHttpsAttribute
。有一个控制器操作,但不应该使用https。我并没有删除全局设置,而是在其他地方添加了RequireHttps,但我认为排除它可能更容易。从AuthorizationContext执行控制器操作
所以我从RequireHttpsAttribute
继承了这么远:
public class MyRequireHttpsAttribute : RequireHttpsAttribute
{
protected override void HandleNonHttpsRequest(AuthorizationContext filterContext)
{
string controller = filterContext.RequestContext.RouteData.GetRequiredString("controller");
string action = filterContext.RequestContext.RouteData.GetRequiredString("action");
if (controller == "Foo" && action == "Bar")
{
filterContext.Result = ???;
}
else
{
base.HandleNonHttpsRequest(filterContext);
}
}
}
我不知道我怎么可以手动触发动作。我认为使用RedirectToRouteResult
会起作用,但不幸的是它会导致重定向循环。
你想重定向到一些动作你如果条件??? – 2014-09-13 16:35:39
是的。基本上我想忽略该特定控制器/操作对的属性 – 2014-09-13 16:39:10