2
环境调用Controller.Redirect或Controller.RedirectToAction:ASP.NET MVC 4时,Visual Studio 2012从外部库
由MVC 4模板创建的AccountController包括RedirectToLocal程序,防止URL欺骗攻击。我想把这个例程移到我自己的外部库(在它自己的库dll项目中)。经过一番调查,看起来最好的办法是扩展Controller类。我的(不成功)尝试这样做如下所示。
我的问题是,Controller.Redirect和Controller.RedirectToAction都是受保护的内部函数,并且“由于其保护级别而无法访问”。
什么是从外部库调用Redirect或RedirectToAction的常用方法?
public static class ControllerExtensionMethods
{
public static ActionResult RedirectToLocal(
this Controller controller,
string redirectUrl)
{
if (controller.Url.IsLocalUrl(redirectUrl)) {
return controller.Redirect(redirectUrl); // error
} else {
return controller.RedirectToAction("Index", "Home"); // error
}
}
}