using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Net.Http.Formatting; using System.Net.Http.Headers; using System.Web; using System.Web.Http; using System.Web.Http.WebHost; using System.Web.Routing; using System.Web.SessionState; namespace Learun.Application.Web { public static class WebApiConfig { public static void Register(HttpConfiguration config) { //config.MapHttpAttributeRoutes(); //config.Formatters.Remove(config.Formatters.XmlFormatter);//默认的XML格式,这样输出数据就会以json格式显示 //var jsonFormatter = config.Formatters.JsonFormatter; //jsonFormatter.SerializerSettings.Formatting = Formatting.Indented; //将输出结果缩进显示 //jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();//将字段名称改成camelCase格式 //config.Routes.MapHttpRoute( // name: "DefaultApi", // routeTemplate: "api/{controller}/{action}/{id}", // defaults: new { id = RouteParameter.Optional } //); config.MapHttpAttributeRoutes(); //Route上传递Session RouteTable.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional }).RouteHandler = new SessionControllerRouteHandler(); RouteTable.Routes.MapHttpRoute( name: "AppApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional }).RouteHandler = new SessionControllerRouteHandler(); //格式化json数据中的时间的T var jsontimeset = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings; jsontimeset.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Local; jsontimeset.DateFormatString = "yyyy-MM-dd HH:mm:ss"; jsontimeset.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat; } //Session配置之WebApi支持(https://www.cnblogs.com/ca47/p/4603701.html) public class SessionRouteHandler : HttpControllerHandler, IRequiresSessionState { public SessionRouteHandler(RouteData routeData) : base(routeData) { } } public class SessionControllerRouteHandler : HttpControllerRouteHandler { protected override IHttpHandler GetHttpHandler(RequestContext requestContext) { return new SessionRouteHandler(requestContext.RouteData); } } public class JsonContentNegotiator : IContentNegotiator { private readonly JsonMediaTypeFormatter _jsonFormatter; public JsonContentNegotiator(JsonMediaTypeFormatter formatter) { _jsonFormatter = formatter; } public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable formatters) { var result = new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json")); return result; } } } }