我正在尝试创建http://domain.com/NotAuthorized
页面。
转到Views\Shared
并添加了一个名为NotAuthorized
的视图女巫来源文件名NotAuthorized.aspx
在我写的路线中
routes.MapRoute(
"NotAuthorized", // Route name
"NotAuthorized.aspx" // Route Url
);
但每次我访问http://domain.com/NotAuthorized
时都会收到错误
无法找到资源。
我缺少什么?
如何在View("NotAuthorized")
中不使用Controller
来访问此内容,换句话说,不通过任何控制器。
答案 0 :(得分:1)
如果不通过控制器,则无法直接访问视图。无法直接提供Views
文件夹中的所有页面。因此,实现所需内容的一种方法是编写自定义[Authorize]
属性并设置错误页面:
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
base.HandleUnauthorizedRequest(filterContext);
}
else
{
filterContext.Result = new ViewResult { ViewName = "NotAuthorized" };
}
}
答案 1 :(得分:0)
我仍然不知道如何完成它,但我所做的是使用Home Controller
并创建一个名为NotAuthorized
public ActionResult NotAuthorized()
{
return View();
}
添加像
这样的路线routes.MapRoute(
"NotAuthorized", // Route name
"NotAuthorized", // URL with parameters
new { controller = "Home", action = "NotAuthorized" } // Parameter defaults
);
现在工作正常,我可以轻松地将我的业务逻辑的任何部分重定向到/Notauthorized
,这将很好地路由。