88 lines
3.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<MediaTypeFormatter> formatters)
{
var result = new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json"));
return result;
}
}
}
}