ASP.net Web API的模組依賴關係

來源:互聯網
上載者:User

安裝好MVC4之後,Visual Studio的工程建立嚮導裡就可以選擇“ASP.NET MVC4 Web Application”來建立MVC4和Web API工程,如果你在下一步中選擇了“Web API”:

那麼你會發現嚮導自動地給你添加了好多額外的類庫引用,這些類庫有些名稱挺誤導人,我也花了些時間才搞清楚它們之間的關係,我總結成一張圖,現貼出來和大家分享:

中用天藍色背景圈起來的模組即時Web API的必須的模組,而其餘部分如果用不著,就可以刪除掉,如果你僅僅是想使用Web API,而無需做頁面渲染輸出,那麼藍色背景圈左邊的這些白色的模組都可以刪掉,如果EntityFramework及雲端儲存你沒用到,那右邊的這兩個模組你也可以刪掉,另外還有嚮導自動給你添加的Controller、View、Javascript、MVC路由配置以及Web.Config中的一些內容,其實都可以刪掉。所以我認為更好的建立單純的Web API工程的方法是在在MVC4工程類型選擇的時候選“Empty”,這樣建立出來的工程也許更貼近你的需要,然後你再使用NuGet包管理工具把不用的包拿掉:

去除MVC4的同時NuGet會提示你是否也去除WebPage和Razor,選是,再去掉不必要的View,MVC路由配置和MVC過濾器配置。這是前後對照:

編譯,會出現錯誤,因為Global.asax中有對剛刪除的舊庫的引用,把這些相關代碼去掉即可。另外Web.Config也要去除一些不必要的namespace引用,這是改好後的Web.Config:

<?xml version="1.0" encoding="utf-8"?><!--  For more information on how to configure your ASP.NET application, please visithttp://go.microsoft.com/fwlink/?LinkId=169433  --><configuration>  <system.web>    <compilation debug="true" targetFramework="4.0" />  </system.web>  <system.webServer>    <validation validateIntegratedModeConfiguration="false" /> <!-- 設定為false來忽略掉整合模式(IIS相關)配置下的一些錯誤 -->    <modules runAllManagedModulesForAllRequests="true" /> <!-- 對每個Request都執行Application_BeginRequest -->    <handlers>      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />    </handlers>  </system.webServer></configuration>

這麼一來,終於得到了一個“純淨”的ASP.net Web API的空白工程。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.