IIS 為 ASP.NET MVC3 文件 (.cshtml) 返回 404
我有標準的 ASP.NET 4 應用程序。在這個應用程序中也有一些剃須刀(例如
test.cshtml)文件。但是,如果我將瀏覽器指向/test文件(不帶副檔名),則 ASP.NET 應用程序可以工作。IIS(靜態文件處理程序)返回 404。相同的應用程序甚至獨立
.cshtml文件都可以在本地電腦(使用 IIS7.5/Win7)和使用(IIS7.5/Win2008R2)的伺服器上執行,但是它不適用於使用 IIS7.0/Win2008 的伺服器。兩台機器上都安裝了 MVC3,兩台機器上的應用程序池都集成了 .NET 4.0。
處理程序如何
.cshtml工作?IIS 何時決定使用靜態文件處理程序以及何時使用該.cshtml處理程序?我還應該檢查什麼?編輯:
澄清 - 我實際上並沒有使用整個 MVC 框架,它就像普通的 .ASPX 或 PHP 文件一樣。沒有控制器,沒有路線,沒有“視圖”。除了舊的 ASP.NET 應用程序之外,我還將它用於一個簡單的腳本。
我認為這不是程式問題,因為它可以在本地電腦上執行,而是配置問題 - Win2008 伺服器上的 IIS 可能配置不正確。
編輯2:
(IIS7.5的機器可以,只有IIS7.0的機器不行。但是不知道是不是IIS版本的問題。)
編輯3:
在我工作的本地電腦上,我沒有設置任何路由。TheCodeKing 和 Keith 建議我需要在某個地方設置路由。也許是的,但它不在我的應用程序中。它可能預設設置在 IIS 配置中的某個位置。
您是否有任何提示可以找到這種“隱式”路由?
編輯4:
注意:在所有電腦上都有
HttpForbiddenHandler,*.cshtml因為您無法下載 cshtml 文件。還有TransferRequestHandlerfor*.。(兩者都啟用。)編輯5:
我發現在它工作的伺服器上,我需要
.cshtml在 web 根目錄中有任何文件。如果我.cshtml從 Web 根目錄中刪除並嘗試從子目錄中呼叫任何內容,它將不起作用。編輯6:
我在另外兩台機器上嘗試過:一台
IIS 7.5使用IIS 7.0. 在IIS 7.5它上面工作(普通安裝沒有配置),但在IIS 7.0它上面不起作用。如何使其在 IIS 7.0 上執行?
耶!經過幾天的努力,我找到了它!:))
使其在IIS 7.0上執行的一種方法是啟用
runAllManagedModulesForAllRequests:<modules runAllManagedModulesForAllRequests="true" />(雖然,在IIS 7.5上它甚至可以使用預設值
runAllManagedModulesForAllRequests="false"。)*不要問我為什麼:)*也許有人可以解釋一下。
不確定這是否是您的特殊問題,但聽起來 ASP.NET 網頁沒有執行(MVC 3 及更高版本依賴於 Razor 和其他東西的網頁)。有時,某些東西的安裝順序可能會弄亂 ASP.NET 和 IIS 的某些配置,這反過來又會導致網頁無法執行,並且不會執行任何 cshtml 文件。
嘗試執行aspnet_regiis /i來清理它。