Web API 均指Asp.net Web API 。本节讲述的是基于Web API 系统在寄宿于IIS.
本节主要讲述Web API全局配置。它是如何优雅的实现这个配置。做过MVC 都知道Global文件来初始化。Web API 本质上也是ASP.NET applications。所以也是在Global定义里一个GlobalConfiguration静态类。该类作用就是初始化ASP.NET applications.如下是GlobalConfiguration的定义。
//
// 摘要:
// 为 ASP.NET 应用程序提供全局 System.Web.Http.HttpConfiguration。
public static class GlobalConfiguration
{
public static HttpConfiguration Configuration { get; }
public static HttpMessageHandler DefaultHandler { get; }
//
// 摘要:
// 获取全局 System.Web.Http.HttpServer。
//
// 返回结果:
// 全局 System.Web.Http.HttpServer。
public static HttpServer DefaultServer { get; }public static void Configure(Action<HttpConfiguration> configurationCallback);
}
其中定义了3个静态只读属性和1个参数是委托类型的方法,供开发人员自己来初始化配置。
//延迟加载
private static Lazy<HttpConfiguration> _configuration = CreateConfiguration();
//只读配置属性
public static HttpConfiguration Configuration
{
get { return _configuration.Value; }
}private static Lazy<HttpConfiguration> CreateConfiguration()
{
return new Lazy<HttpConfiguration>(() =>
{
HttpConfiguration config = new HttpConfiguration(new HostedHttpRouteCollection(RouteTable.Routes));
ServicesContainer services = config.Services;
Contract.Assert(services != null);
services.Replace(typeof(IAssembliesResolver), new WebHostAssembliesResolver());
services.Replace(typeof(IHttpControllerTypeResolver), new WebHostHttpControllerTypeResolver());
services.Replace(typeof(IHostBufferPolicySelector), new WebHostBufferPolicySelector());
services.Replace(typeof(IExceptionHandler),
new WebHostExceptionHandler(services.GetExceptionHandler()));
return config;
});
}
有兴趣的朋友可以下载web Api 源码查看。http://aspnetwebstack.codeplex.com/wikipage?title=Contributors.
下面将继续讲解剖析HttpConfiguration。HttpConfiguration如何初始化?默认配置又是什么?我们该如何来定义自己的配置。
原文:http://www.cnblogs.com/DripRoad/p/6087321.html