2009-08-20 90 views
2

我剛剛得到了新的發展箱時遇到讓我的MVC項目啓動和運行的問題。我的舊盒子有Server 2003和IIS6。在設置了here中提到的通配符映射後,我能夠使我的MVC應用程序在此框上工作。我的新盒子正在運行Vista Business和IIS7。當我複製我的應用程序並嘗試運行它時,出現'http 404找不到資源。'錯誤。但是,如果我創建一個新的MVC應用程序並運行它,一切正常。我也從我的舊盒子裏複製了Nerd晚餐應用程序,並且工作得很好。404錯誤時,ASP.NET MVC應用IIS7

我驗證過的應用程序在集成模式下運行,並且比較了工作和非工作應用程序的web.config文件中,但看到沒有什麼比專用AppSettings的不同等。我試圖在經典模式下使用通配符映射集來運行應用程序,但這也不起作用。我也嘗試使用卡西尼運行應用程序,但得到了相同的結果。

+1

可以運行菲德勒,看看哪個請求實際上產生404? – 2009-08-20 15:47:55

+0

這是對應用主頁的初始請求。 即{主機名}/{應用程序名稱}/ – Hamman359 2009-08-20 16:53:13

回答

0

OK,我想通了這個問題。這個應用程序是一個Web Forms應用程序的端口,作爲一個概念驗證項目。因此,當項目第一次創建時,我們只需在項目名稱的末尾添加一個.MVC以使其{project name} .MVC。這一點,現在我知道發生了什麼並不令人驚訝,導致了默認路由定義的問題。我更改了名稱以使用下劃線而不是句號,現在一切正常。我假設它在IIS6下運行時工作正常,因爲它使用通配符映射進行設置,因此沒有.MVC擴展名將其混淆。

1

我已經發布的答案在我的博客,看看在

http://nkitdugar.blogspot.com/2011/02/special-care-while-migrating-mvc.html

我有較早IIS 6上託管的基於MVC應用程序現在IIS 6不支持擴展名URL路由默認情況下,所以我們需要在IIS6中的{ControllerName} .aspx {Action method} {Id}中定義的默認路由中爲控制器名稱添加一些擴展。此外,我們如果我們想要去像.mvc等一些其他的擴展,然後我們需要使用像通配符mappngs等技術,它映射

現在,當我們已經遷移到IIS7,然後擴展名的URL支持,這意味着URL可以在那裏沒有任何相應的物理位置。

因此,當您將您的MVC應用程序遷移到IIS7時,請確保在Globla.asax中定義的默認路由沒有任何使用{controller}.aspx\{action method}\{Id}這樣的控制器定義的擴展名,並將其更改爲\clean URL route {Controller}\{Action Method}\{ID(optional)}。 你應該記住的是,網站的應用程序池的管道模式應該從經典設置爲集成的第二件事。

這就是現在你的網站已準備好要在IIS7主辦。

+1

請務必閱讀[上自我推銷FAQ](http://stackoverflow.com/faq#promotion)仔細。另外請注意,每次鏈接到自己的網站/產品時都需要發佈免責聲明。 – j0k 2012-11-29 12:44:05