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

ASP.net "{Controller}/" returning 403.14 error

我的一个开发项目遇到了一个奇怪的问题。问题在于指向某个 URL“//localhost:62168/Images/Index”的链接。我有链接到那个 URL 的按钮,但是当访问“//localhost:62168/Images/”时,它 returns HTTP 错误 403.14 - 禁止错误。见下图:

localhost//Images/

奇怪的是,当我准确输入 URL ("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 }
            );
        }
    }
}

我还尝试了其他在线论坛中提供的多个 "solutions",但均无济于事。其中包括:

  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

如果有人能提供任何帮助,我将不胜感激!

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

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