Asp.net

IIS 為 ASP.NET MVC3 文件 (.cshtml) 返回 404

  • December 31, 2014

我有標準的 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來清理它。

引用自:https://stackoverflow.com/questions/7366925