88 lines
3.5 KiB
C#
88 lines
3.5 KiB
C#
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;
|
||
}
|
||
}
|
||
}
|
||
}
|