1. 程式人生 > 其它 >.net webapi 全域性設定

.net webapi 全域性設定

using Newtonsoft.Json.Serialization;
using Sfq.WebApi.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web.Http.Cors;

namespace Sfq.WebApi
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服務

            // json格式化時,[Serializable]會導致讀取到私有屬性,此處取消讀取私有屬性
            config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();

            // 刪除xml返回格式
            GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

            // 新增json返回格式(可省略,刪除XML後,預設以json格式返回)
            GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(
                new System.Net.Http.Formatting.QueryStringMapping("datatype", "json", "application/json"));

            // 開啟Token全域性驗證服務
            config.Filters.Add(new AuthorizeAttribute());

            // Web API 路由
            config.MapHttpAttributeRoutes();

            // 日期格式
            ReturnDataFormatInJsonSerializersSettings();

            // 配置跨域
            config.EnableCors(new EnableCorsAttribute("*", "*", "*"));

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }

        private static void ReturnDataFormatInJsonSerializersSettings()
        {
            var settings = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
            settings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Local;
            settings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
            // long轉string
            settings.Converters.Add(new Int64ToStringConverter());
        }
    }
}

  

歲月無情催人老,請珍愛生命,遠離程式碼!!!