WebApiModule.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Reflection;
  3. using System.Web.Http;
  4. using Abp.Application.Services;
  5. using Abp.Configuration.Startup;
  6. using Abp.Json;
  7. using Abp.Modules;
  8. using Abp.Timing;
  9. using Abp.WebApi;
  10. using Abp.WebApi.Authorization;
  11. using Abp.WebApi.Configuration;
  12. using Abp.WebApi.Security.AntiForgery;
  13. using Newtonsoft.Json.Serialization;
  14. namespace ShwasherSys
  15. {
  16. [DependsOn(typeof(AbpWebApiModule), typeof(ShwasherApplicationModule))]
  17. public class IwbYueWebApiModule : AbpModule
  18. {
  19. public override void PreInitialize()
  20. {
  21. //配置所有Cache的默认过期时间为2小时
  22. Configuration.Caching.ConfigureAll(cache =>
  23. {
  24. cache.DefaultSlidingExpireTime = TimeSpan.FromHours(2);
  25. });
  26. }
  27. public override void Initialize()
  28. {
  29. IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
  30. Configuration.Modules.AbpWebApi().DynamicApiControllerBuilder
  31. .ForAll<IApplicationService>(typeof(ShwasherApplicationModule).Assembly, "app")
  32. .Build();
  33. }
  34. public override void PostInitialize()
  35. {
  36. GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new IwbCamelCasePropertyNamesContractResolver();
  37. var httpConfiguration = IocManager.Resolve<IAbpWebApiConfiguration>().HttpConfiguration;
  38. //httpConfiguration.Services.Replace(typeof(AbpApiAuthorizeFilter), IocManager.Resolve<IwbApiAuthorizeFilter>());
  39. httpConfiguration.Filters.Remove(IocManager.Resolve<AbpApiAuthorizeFilter>());
  40. httpConfiguration.Filters.Add(IocManager.Resolve<ShwasherApiAuthorizeFilter>());
  41. httpConfiguration.Filters.Remove(IocManager.Resolve<AbpAntiForgeryApiFilter>());
  42. httpConfiguration.Filters.Add(IocManager.Resolve<IwbAbpAntiForgeryApiFilter>());
  43. }
  44. }
  45. public class IwbCamelCasePropertyNamesContractResolver : AbpCamelCasePropertyNamesContractResolver
  46. {
  47. protected override void ModifyProperty(MemberInfo member, JsonProperty property)
  48. {
  49. if (property.PropertyType != typeof(DateTime) && property.PropertyType != typeof(DateTime?))
  50. {
  51. return;
  52. }
  53. if (member.GetMemberSingleAttribute<DisableDateTimeNormalizationAttribute>() == null)
  54. {
  55. property.Converter = new AbpDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
  56. }
  57. }
  58. }
  59. }