我在ASP.NET巫現有項目工作的虛擬路徑是基於包含點使用卡西尼與包含點
http://localhost/My.Awesome.WebClient/
這樣的設置工作正常使用集成的Visual Studio的發展探析服務器的文件夾中,但是當我添加MVC內容並嘗試訪問它時失敗(錯誤404資源未找到)。
http://msdn.microsoft.com/en-us/library/ee941656.aspx似乎解釋了這個問題:
如果您在Visual Studio 2010中的文件系統網站,該網站是一個包含一個點在文件夾名稱的文件夾中,URL(。)路由將無法可靠地工作。某些虛擬路徑返回HTTP 404錯誤。這是因爲Visual Studio 2010使用不正確的根虛擬目錄路徑啓動Visual Studio Development Server(Cassini)。
然而,該項目是一個Web項目,而不是一個網站,它只有當我開始使用MVC失敗。
這個問題可以很容易地複製:
- 文件 - 新建 - 項目 - ASP.NET MVC 3 Web應用程序
- 編輯項目設置,網址:使用Visual Studio開發服務器
- 設置虛擬路徑的東西,包含一個圓點
- 嘗試運行網站
有沒有辦法得到這個工作,除了使用IIS而不是卡西尼?
編輯:
我剛纔找到了解決方法。它並沒有真正在部署方案的工作,但它可能會找到解決辦法幫助:
在我的Global.asax.cs文件:
routes.MapRoute(
"Default", // Route name
// Notice that I added the virtual path here
"My.Awesome.WebClient/{controller}/{action}/{id}", // URL with parameters
new { action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
// This is also new
routes.MapRoute(
"Root", // Route name
"", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
使用此解決方案,我的MVC的網站工作,但只有在以下網址:
http://localhost/My.Awesome.WebClient/My.Awesome.WebClient/
在Visual Studio vNext中,我認爲應該刪除Cassini以強制每個人使用IIS Express(儘管我個人建議每個人都使用本地IIS 7,如果可能的話IIS Express仍然不是IIS)。 – 2012-02-22 11:53:32
我不同意 - 卡西尼有它的地方。它重量輕,預裝並且不會在遠程端口上偵聽。請參閱Scott Gu的博客以獲取更多比較:http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx – Spikeh 2012-02-22 15:20:34
直到現在,我從未聽說過「IIS Express」提供開發人員需要的所有功能。如果沒有解決這個問題,我會試試看,謝謝。我也喜歡它不需要管理權限來調試。 – 2012-02-22 16:11:17