簡體   English   中英

mvc 路由生成 iis 7.5 錯誤禁止

[英]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 中。 沒有它就可以工作。
  • 它在沒有 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM