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



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

本地主机//图像/

奇怪的是,当我准确地输入URL("localhost:62168/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. 将"目录浏览启用="true"添加到web.config
  2. 在命令提示符下运行"C:\windows\Microsoft.NET\Framework64\v4.0.30319> aspnet_regiis.exe -i">
  3. 通过 IIS Express
  4. 并注册 IIS Express 和 ASP.Net

我将非常感谢任何人可以提供的任何帮助!

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

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

最新更新