ASP.net“{Controller} /”返回403.14错误

时间:2017-07-05 17:18:05

标签: asp.net asp.net-mvc iis routing http-error

我对我的一个开发项目有一个奇怪的问题。问题是链接到某个URL“// localhost:62168 / Images / Index”。我有按钮链接到该URL但是当访问“// localhost:62168 / Images /”时,它返回HTTP错误403.14 - 禁止错误。见下图:

localhost//Images/

奇怪的是,当我准确输入网址(“localhost:62168 / Images / Index”)时,它会正确加载页面。见下图:

localhost/Images/Index

我已经在网上进行了大量的研究,我相信这可能是路由问题所以我已经添加了我的“RouteConfig.cs”文件的代码。不幸的是,我是ASP.net和MVC的新手,并且不了解正确的路由程序:

using System.Web.Mvc;
using System.Web.Routing;

namespace ReedHampton
{
    public class RouteConfig
    {
        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 }
            );
        }
    }
}

我也尝试过在其他在线论坛中提出的其他多种“解决方案”无济于事。其中包括:

  1. 将“directoryBrowse enabled =”true“”添加到web.config
  2. 在命令提示符下运行“C:\ windows \ Microsoft.NET \ Framework64 \ v4.0.30319> aspnet_regiis.exe -i”
  3. 浏览IIS Express并注册IIS Express和ASP.Net
  4. 我非常感谢任何人都能提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

如果在文件系统上找到与URL匹配的内容,IIS将尝试使请求短路。换句话说,我假设您的文档根目录中有一个Images目录。因此,IIS将尝试命中此目录,而不是将请求传递给ASP.NET机器。由于您已禁用目录浏览,因此您将获得403。

长短,您需要保持ASP.NET MVC路由与文档根目录中的物理路径不同。您可以将Images目录的名称更改为img,或将其放在父文件夹中,如默认值/Content/Images。否则,您需要更改控制器名称或创建到该控制器的自定义路由,而不是/Images