【问题标题】:mvc routing generates iis 7.5 error forbiddenmvc 路由生成 iis 7.5 错误禁止
【发布时间】:2012-05-03 22:36:09
【问题描述】:

我的 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"
       );

然后在浏览器中输入:

本地主机/MySite/测试/默认

我得到了想要的结果:显示页面 ~/ASPWebforms/MyFolder/Default.aspx。

但是如果我使用以下 代码

routes.MapPageRoute(
                    "SomeRoute",
                    "Test/",
                    "~/ASPWebforms/MyFolder/Default.aspx"
       );

试试看

本地主机/MySite/测试

IIS 7.5 说:

HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出 这个目录的内容。

我在最后一段代码中做错了吗?

提前谢谢!

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing


    【解决方案1】:

    在 IIS 7.5 上重新安装 .NET 4 x86 & x64 并设置您的网站 .net 版本。 我默认 x86 编写简单的命令。

    停止 IIS: 1)iisreset /停止

    stup 命令(对于 iis 默认为 .net stup): 2) cd %windir%\Microsoft.NET\Framework\v4.0.30319 3)aspnet_regiis.exe -i

    重置命令(对于 iis 由默认的 .net 更改为 .net 4 版本): 4)aspnet_regiis.exe -iru

    启动 IIS: 5)iisreset /开始

    【讨论】:

    • 感谢您的回答!不幸的是,这对我不起作用。
    【解决方案2】:

    尝试使用设置默认值的重载之一设置路由,如下所示:

                routes.MapPageRoute(
                        "SomeRoute",
                        "Test/{reportname}",
                        "~/ASPWebforms/MyFolder/{reportname}.aspx",
                        false,
                        new RouteValueDictionary(new {reportname = "Default"})
                );
    

    不是很有信心它会解决你的问题,但它可以很好地处理你的原始示例。

    【讨论】:

    • 感谢您的回答!不幸的是,如果我输入“localhost/MySite/Test”,我仍然会收到“HTTP Error 403.14 - Forbidden”。如果我输入“localhost/MySite/Test/Default”,我会得到想要的结果。
    【解决方案3】:

    我有很多这样的事情,从周围阅读看来,这可能是由几个不同的事情引起的。就我而言,我有这样一条路线:

    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.

    当我将此行添加到路由配置时,此问题已修复:

    routes.RouteExistingFiles = true;
    

    错误消息中包含一些事实:/signin 是一个目录,并且 Web 服务器被配置为不列出其中的文件。除非您另外配置,否则此文件路径似乎优先于路由。

    我尝试过的其他事情:

    • 我不需要使用不同的重载MapPageRoute
    • 我不需要在 web.config 下添加UrlRoutingModule system.webServer|Modules。没有它就可以工作。
    • 它可以在没有 web.config 设置的情况下工作 <modules runAllManagedModulesForAllRequests="true"> 我确实有其他原因,但如果我删除它,那么这个修复仍然有效。
    • 我确实在机器的Server Manager|Web Server|Add Role Services 对话框中安装了服务器功能“Http Redirection”,但再次删除后仍然有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 2015-11-26
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      相关资源
      最近更新 更多