using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Server.Kestrel.Core; using Microsoft.Extensions.DependencyInjection; using System; using System.Text.Encodings.Web; using System.Text.Json; using System.Text.Unicode; namespace Yunda.ISAS.DataMonitoringServer.WebApi { public class WebApiStartup { public void ConfigureServices(IServiceCollection services) { services.AddMvc().AddJsonOptions(options => { //格式化日期时间格式 options.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter()); //数据格式首字母小写 options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; //数据格式原样输出 //options.JsonSerializerOptions.PropertyNamingPolicy = null; //取消Unicode编码 options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All); //忽略空值 options.JsonSerializerOptions.IgnoreNullValues = true; //允许额外符号 options.JsonSerializerOptions.AllowTrailingCommas = true; //反序列化过程中属性名称是否使用不区分大小写的比较 options.JsonSerializerOptions.PropertyNameCaseInsensitive = false; }); ; // If using Kestrel: //services.AddSingleton(); services.Configure(options => { options.AllowSynchronousIO = true; }); } public void Configure(IApplicationBuilder app) { app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}"); //区域路由 endpoints.MapAreaControllerRoute( name: "areas", areaName: "areas", pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"); }); app.Run(context => { return context.Response.WriteAsync("datamonitor webapi startup !",encoding:System.Text.Encoding.Unicode); }); } } public class DatetimeJsonConverter : System.Text.Json.Serialization.JsonConverter { public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType == JsonTokenType.String) { if (DateTime.TryParse(reader.GetString(), out DateTime date)) return date; } return reader.GetDateTime(); } public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) { writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss")); } } }