﻿# ASP.NET MVC 開發心得分享 (16)：在網站專案下運作

之前有很多人問我 ASP.NET MVC 到底可不可以在 Visual Studio 的網站專案(WebSite Project)模式下運作，也就是在 ASP.NET 動態編譯的架構下運行 ASP.NET MVC，事實上是沒問題且非常容易的，唯一的缺點就是會失去 Visual Studio 開發工具的有效支援，例如 Add Controller 或 Add View 等等的工作可能會變的沒辦法自動化等等。

1\. 我們先在一個方案中建立一個基本的「網站專案」( WebSite Project ) 與一個 ASP.NET MVC 專案

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/eaab859b61c5a69d6b56-image.png)

2\. 修改如上圖 WebSite2 專案的 web.config 讓專案本身能支援 ASP.NET MVC 所需的設定  
   ( 如下圖的這些宣告都可以從 MvcApplication1 專案取得 )

調整 <system.web> / <compilation> / <assemblies> 載入與 ASP.NET MVC 相關的組件

[![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/c57753c6aeb6b7698fb8-image_thumb.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/570adb8c90df92b16097-image.png)

調整 <system.web> / <pages> 下，新增 <namespaces> 宣告  
【可參考：[ASP.NET 如何預設匯入指定的命名空間(Namespace)](/post/2008/12/24/How-to-auto-import-specific-Namespace-in-ASPNET) 】

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/85a78e081eb4e0fad511-image.png)

調整 <system.web> / <httpHandlers> 與 <httpModules> 下，新增以下宣告

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/358e619e59028de62d8f-image.png)

如果你的網站會安裝到 IIS7 上面執行，那你也要修改 <system.webServer> 的設定

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d5d22c91b8155db41f26-image.png)

3\. 在網站專案新增 Global.asax 檔案，並將 MvcApplication2 中的 Routing 相關程式碼複製進來

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/58f7b18903a8cd0b49a2-image.png)

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/237d560e88e9ad101a6f-image.png)

4\. 將 Views, Scripts, Content 目錄移至 WebSite2 專案下，將 Controllers 目錄移至 App\_Code 目錄下

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/32e98a24cf0d0c81f0a7-image.png)

5\. 如果你希望讓首頁 ( http://localhost/ ) 也能執行 ASP.NET MVC 的話，那你也可以將 Default.aspx 也移至 WebSite2 專案，但有些地方要調整過才能符合 WebSite 專案的要求。

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/e3a16f6761615b1af34e-image.png)

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/906e90d21dcf8f2be03c-image.png)

以上五個步驟完成後，ASP.NET MVC 就可以順利在 WebSite 專案的模式下運作，而且可以享用動態編譯的特性，你隨時可以修改 App\_Code\\Controllers 下的程式碼，而且立即生效！

**備註**：如果你要將此網站安裝在 IIS6 上，請記得要設定「**萬用字元應用程式對應**」，如下圖示：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/2b8d67e3dbf3f1d65480-image.png)
