[英]mvc routing generates iis 7.5 error forbidden
我的 WebApplication 我在这里有一个 ASPX WebForms 页面:
~/ASPWebforms/MyFolder/Default.aspx
如果我使用此代码:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapPageRoute(
"SomeRoute",
"Test/{reportname}",
"~/ASPWebforms/MyFolder/{reportname}.aspx"
);
然后在浏览器中输入:
本地主机/我的站点/测试/默认
我得到了想要的结果:显示页面 ~/ASPWebforms/MyFolder/Default.aspx。
但是如果我使用下面的代码
routes.MapPageRoute(
"SomeRoute",
"Test/",
"~/ASPWebforms/MyFolder/Default.aspx"
);
并尝试
本地主机/我的站点/测试
IIS 7.5 说:
HTTP 错误 403.14 - Forbidden Web 服务器配置为不列出此目录的内容。
我在最后一段代码中做错了什么吗?
提前谢谢!
我有很多这样的事情,从阅读周围来看,它似乎可能是由几种不同的事情引起的。 就我而言,我有一条这样的路线:
routes.MapPageRoute("signin", "signin", "~/SignIn/SignIn.aspx")
所以路由路径是/signin
,但还有一个名为/signin
的文件夹,其中包含 .aspx 页面。
我收到错误响应HTTP Error 403.14 - Forbidden. The Web server is configured to not list the contents of this directory
HTTP Error 403.14 - Forbidden. The Web server is configured to not list the contents of this directory
。
当我将此行添加到路由配置时,此问题已修复:
routes.RouteExistingFiles = true;
错误消息有一定道理: /signin
是一个目录,Web 服务器配置为不列出其中的文件。 除非您以其他方式配置,否则此文件路径似乎优先于路由。
我尝试过的其他事情:
MapPageRoute
重载UrlRoutingModule
添加到system.webServer|Modules
下的 web.config 中。 没有它就可以工作。<modules runAllManagedModulesForAllRequests="true">
由于其他原因我确实有这个,但如果我删除它,那么这个修复仍然有效。Server Manager|Web Server|Add Role Services
对话框中安装了服务器功能“Http 重定向”,但再次将其删除后,这仍然有效。在 IIS 7.5 上重新安装 .NET 4 x86 & x64 并设置您的网站 .net 版本。 默认情况下,我编写简单的命令 x86。
停止 IIS: 1) iisreset /stop
Stup 命令(默认为 iis .net stup):2) cd %windir%\\Microsoft.NET\\Framework\\v4.0.30319 3)aspnet_regiis.exe -i
重置命令(对于 iis,通过 defalt .net 更改为 .net 4 版本):4)aspnet_regiis.exe -iru
启动 IIS: 5)iisreset /start
尝试使用设置默认值的重载之一来设置路由,如下所示:
routes.MapPageRoute(
"SomeRoute",
"Test/{reportname}",
"~/ASPWebforms/MyFolder/{reportname}.aspx",
false,
new RouteValueDictionary(new {reportname = "Default"})
);
不是很有信心它会解决您的问题,但与您的原始示例一起使用它可以很好地完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.