我正在开发的一个项目遇到一个奇怪的问题。问题在于指向某个 URL“//localhost:62168/Images/Index”的链接。我有链接到该 URL 的按钮,但是当访问“//localhost:62168/Images/”时,它会返回 HTTP 错误 403.14 - 禁止错误。见下图:
本地主机//图片/ https://i.stack.imgur.com/0VMYu.png
但奇怪的是,当我准确输入 URL(“localhost:62168/Images/Index”)时,它会正确加载页面。见下图:
本地主机/图像/索引 https://i.stack.imgur.com/U7psu.jpg
我在网上做了很多研究,我相信这可能是路由问题,所以下面我添加了“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 }
);
}
}
}
我还尝试了其他在线论坛中提出的多种其他“解决方案”,但均无济于事。这些包括:
- 将“directoryBrowseenabled=”true“”添加到 web.config
- 在命令提示符中运行“C:\windows\Microsoft.NET\Framework64\v4.0.30319> aspnet_regiis.exe -i”
- 浏览 IIS Express 并注册 IIS Express 和 ASP.Net
我将非常感谢任何人可以提供的任何帮助!
如果 IIS 在文件系统上发现与 URL 匹配的内容,则会尝试短路该请求。换句话说,我假设你有一个Images
文档根目录中的目录。因此,IIS 将尝试访问此目录,而不是将请求传递到 ASP.NET 机器。由于您已禁用目录浏览,因此您会收到 403。
总而言之,您需要保持 ASP.NET MVC 路由与文档根目录中物理路由的唯一性。您可以更改名称Images
目录类似img
,或者将其放在父文件夹中,例如默认的/Content/Images
。否则,您需要更改控制器名称或创建到未调用的控制器的自定义路由/Images
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)