有许多类似的问题,但没有一个答案对我有用。我尝试返回' RedirectToAction(" Index");'它位于同一个控制器中,来自公共ActionResult Create()'当用户未被授权创建新窗口小部件时。我没有其他名称为Index的文件夹,尽管还有其他公共ActionEesults Index()'其他控制器中的功能。任何建议都将不胜感激......谢谢
答案 0 :(得分:0)
我试图复制你的场景无济于事。 带有Test控制器的新MVC5项目在两个操作上都尝试了Authorize属性来测试,但如果您无权查看资源,他们所做的只是将您重定向到登录页面。
HTTP 403.14是拒绝目录列表的代码。 在我看来,您正在重定向到未由MVC处理的URL,而是由您的IIS express选择,默认情况下不允许列出目录内容。
所以需要考虑的问题是: 1:你打电话的确切网址是什么。 2:您的路由设置如何,您是否有自定义路由?路线的顺序很重要。
为了能够为您提供更多信息,请发布控制器代码以及RouteConfig.cs文件。
这是测试代码。
public class TestController : Controller
{
// GET: Test
[Authorize] // just redirects back to login page if you call create action.
public ActionResult Index()
{
return View();
}
// GET: Test/Create
public ActionResult Create()
{
return RedirectToAction("Index");
}
}
这是路由配置文件。不变。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}