簡體   English   中英

.aspx頁不在MVC5應用程序的根目錄時導致“ 404 not found”

[英].aspx page causes “404 not found” when not in root of an MVC5 app

好吧,這讓我難過了,整日忙着。 我有一個MVC5應用程序,在子文件夾中找不到.aspx頁。

所以我在這里有一個.aspx頁面/Reports/page.aspx

我已經嘗試根據各種網絡搜索添加這些路由配置添加項

routes.Ignore("{resource}.aspx/{*pathinfo}");
routes.Ignore("Reports/{resource}.aspx/{*pathInfo}");
routes.IgnoreRoute("Reports/{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" });

我發現的問題是在網站根目錄中找到了一個.aspx文件,但在“報告”子文件夾中卻找不到我的.aspx文件。

甚至更陌生的是,我可以在本地發布並將本地IIS7.5指向發布的站點,並且可以路由到我的.aspx文件。 發布到遠程服務器(共享主機),我得到404!

如果有人對可能的原因有任何線索...也許是IIS配置設置? ...我將不勝感激。 我從字面上搜索了一整天,沒有發現排序的任何東西。

提前致謝...

注冊路由。忽略和路由.IgnoreRoute不是必需的。 aspx應該可以正常工作(似乎可以在根目錄下工作)。 您確定沒有任何與/ Reports文件夾相關的重寫規則或其他路由嗎? 這是否發生在所有文件夾上? 嘗試創建一個空的aspx文件,或只放置<%= Now%>並查看它是否可以與其他名稱或其他文件夾一起使用。

正如評論中smirnov所提到的,訪問.aspx文件都不需要route.Ignore或route.IgnoreRoute語句。 但是,您可能會遇到我最近也遇到的一個問題。 因此,我將介紹這種情況。

如果您使用的是“ Web.sitemap”文件,並且僅具有“ filename.aspx”條目,則在訪問該頁面的站點地圖條目時會遇到運行時錯誤。 原因是,MVC框架將“ /abc.aspx”請求轉換為“ / abc”。 因此,我不得不在web.sitemap中使用重復項,如下所示:

<siteMapNode url="Account/AddUser.aspx" title="Add New User"  description="">
</siteMapNode>

<siteMapNode url="Account/AddUser" title="Add New User"  description="">
</siteMapNode>

當然,必須有一些優雅的解決方案,例如“ Routes.Ignore()”,但是,我要指出的是,缺少這些不是.aspx文件不可訪問的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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