WebApiStartup.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using Microsoft.AspNetCore.Builder;
  2. using Microsoft.AspNetCore.Http;
  3. using Microsoft.AspNetCore.Server.Kestrel.Core;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using System;
  6. using System.Text.Encodings.Web;
  7. using System.Text.Json;
  8. using System.Text.Unicode;
  9. namespace Yunda.ISAS.DataMonitoringServer.WebApi
  10. {
  11. public class WebApiStartup
  12. {
  13. public void ConfigureServices(IServiceCollection services)
  14. {
  15. services.AddMvc().AddJsonOptions(options =>
  16. {
  17. //格式化日期时间格式
  18. options.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter());
  19. //数据格式首字母小写
  20. options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
  21. //数据格式原样输出
  22. //options.JsonSerializerOptions.PropertyNamingPolicy = null;
  23. //取消Unicode编码
  24. options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
  25. //忽略空值
  26. options.JsonSerializerOptions.IgnoreNullValues = true;
  27. //允许额外符号
  28. options.JsonSerializerOptions.AllowTrailingCommas = true;
  29. //反序列化过程中属性名称是否使用不区分大小写的比较
  30. options.JsonSerializerOptions.PropertyNameCaseInsensitive = false;
  31. }); ;
  32. // If using Kestrel:
  33. //services.AddSingleton();
  34. services.Configure<KestrelServerOptions>(options =>
  35. {
  36. options.AllowSynchronousIO = true;
  37. });
  38. }
  39. public void Configure(IApplicationBuilder app)
  40. {
  41. app.UseRouting();
  42. app.UseEndpoints(endpoints =>
  43. {
  44. endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
  45. //区域路由
  46. endpoints.MapAreaControllerRoute(
  47. name: "areas",
  48. areaName: "areas",
  49. pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
  50. });
  51. app.Run(context =>
  52. {
  53. return context.Response.WriteAsync("datamonitor webapi startup !",encoding:System.Text.Encoding.Unicode);
  54. });
  55. }
  56. }
  57. public class DatetimeJsonConverter : System.Text.Json.Serialization.JsonConverter<DateTime>
  58. {
  59. public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
  60. {
  61. if (reader.TokenType == JsonTokenType.String)
  62. {
  63. if (DateTime.TryParse(reader.GetString(), out DateTime date))
  64. return date;
  65. }
  66. return reader.GetDateTime();
  67. }
  68. public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
  69. {
  70. writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));
  71. }
  72. }
  73. }