我想在用户首次加载网站时进行简单的重定向。
为此,我只是在BaseController的BeginExecuteCore()
方法上访问RouteData,如果URL没有特定值,那么我将重定向到另一个https route
:
public class BaseController : Controller
{
protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state)
{
// access route data
if (condition == true)
Response.Redirect(string.Format("https://{0}/en/en", Request.Url.Authority), true);
}
}
}
一些事实:
Initialize(RequestContext requestContext)
等EndResponse=true
MVC 5
我的问题是: 如何以最有效的方式将用户重定向到另一条路线,因为我知道我需要访问RouteData并且不会抛出恼人的异常?
谢谢!
答案 0 :(得分:0)
我不喜欢使用BeginExecuteCore()方法,因为我还在使用mvc 3和4。
在mvc 4中,我会使用动作过滤器在页面加载之前检查一些内容。
您看到该错误的原因可能是因为您要在页面已加载时重定向用户。
public class LogActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (condition == true)
filterContext.Response.Redirect(string.Format("https://{0}/en/en", Request.Url.Authority), true);
}
}
答案 1 :(得分:0)
Response.Redirect(anyUrl)
导致302
状态代码
Html.AntiForgeryToken()
通常与302
状态代码冲突。
您可以将以下代码放在Application_Start
:
AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
安全警告:
SuppressXFrameOptionsHeader =true
会阻止您 网站被加载到iframe。