• ASP.net Web API的模块依赖关系


    安装好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 visit
      http://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的空白工程。

  • 相关阅读:
    sklearn KMeans聚类算法(总结)
    求素数的一个快速算法 Python 快速输出素数算法
    Java方法的多态
    Java static特性
    第一周-调用weka算法进行数据挖掘
    第一周 -神经网络算法与实现
    1【西北师大-2108Java】第一次作业成绩汇总
    第一周博客作业
    十一,专著研读(CART算法)
    十,专著研读(线性回归)
  • 原文地址:https://www.cnblogs.com/guogangj/p/2947820.html
Copyright © 2020-2023  润新知