MVC返回RedirectToAction(“Index”)抛出HTTP错误403.14 - 禁止

时间:2015-02-17 21:43:07

标签: c# asp.net-mvc

有许多类似的问题,但没有一个答案对我有用。我尝试返回' RedirectToAction(" Index");'它位于同一个控制器中,来自公共ActionResult Create()'当用户未被授权创建新窗口小部件时。我没有其他名称为Index的文件夹,尽管还有其他公共ActionEesults Index()'其他控制器中的功能。任何建议都将不胜感激......谢谢

1 个答案:

答案 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 }
            );
        }