Startup.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. //using Microsoft.AspNetCore.Http;
  6. using Microsoft.AspNetCore.Builder;
  7. using Microsoft.AspNetCore.Hosting;
  8. using Microsoft.Extensions.Configuration;
  9. using Microsoft.Extensions.DependencyInjection;
  10. using Microsoft.Extensions.Logging;
  11. using Winsoft.GOV.XF.WebApi.WXCore.Utilities;
  12. using Senparc.Weixin.Entities;
  13. using Microsoft.Extensions.Options;
  14. using Senparc.Weixin.MP.Containers;
  15. using Winsoft.GOV.XF.WebApi.WXCore.Data;
  16. using Pomelo.EntityFrameworkCore.MySql;
  17. using Microsoft.EntityFrameworkCore;
  18. //using Winsoft.GOV.XF.WebApi.WXCore.DBProvider;
  19. namespace Winsoft.GOV.XF.WebApi.WXCore
  20. {
  21. public class Startup
  22. {
  23. public Startup(IHostingEnvironment env)
  24. {
  25. var builder = new ConfigurationBuilder()
  26. .SetBasePath(env.ContentRootPath)
  27. .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
  28. .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
  29. .AddEnvironmentVariables();
  30. Configuration = builder.Build();
  31. //Senparc.Weixin.SDK 配置
  32. builder.AddJsonFile("SenparcWeixin.json", optional: true);
  33. //提供网站根目录
  34. Server.AppDomainAppPath = env.ContentRootPath;
  35. }
  36. public IConfigurationRoot Configuration { get; }
  37. // This method gets called by the runtime. Use this method to add services to the container.
  38. public void ConfigureServices(IServiceCollection services)
  39. {
  40. // Add framework services.
  41. services.AddMvc();
  42. services.Configure<SenparcWeixinSetting>(Configuration.GetSection("SenparcWeixinSetting"));
  43. // Adds a default in-memory implementation of IDistributedCache.
  44. services.AddDistributedMemoryCache();
  45. services.AddDbContext<XFContext>(options =>
  46. options.UseMySql(Configuration.GetConnectionString("DefaultConnection")));
  47. services.AddSession(options =>
  48. {
  49. // Set a short timeout for easy testing.
  50. options.IdleTimeout = TimeSpan.FromSeconds(10);
  51. options.CookieHttpOnly = true;
  52. });
  53. services.AddTransient<DbInitializer>();
  54. }
  55. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
  56. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IOptions<SenparcWeixinSetting> senparcWeixinSetting, DbInitializer dbInitializer)
  57. {
  58. loggerFactory.AddConsole(Configuration.GetSection("Logging"));
  59. loggerFactory.AddDebug();
  60. loggerFactory.AddFile(Configuration.GetSection("Logging"));
  61. app.UseStaticFiles();
  62. app.UseSession();
  63. app.UseMvc(routes =>
  64. {
  65. routes.MapRoute(
  66. name: "default",
  67. template: "{controller=WXToken}/{action=Index}/{id?}");
  68. });
  69. #region 微信相关
  70. //注册微信
  71. AccessTokenContainer.Register(senparcWeixinSetting.Value.WeixinAppId, senparcWeixinSetting.Value.WeixinAppSecret);
  72. dbInitializer.Initialize();
  73. //DBConfig.DefaultConnectionString = Configuration["Data:DefaultConnection:ConnectionString"];
  74. //Senparc.Weixin SDK 配置
  75. Senparc.Weixin.Config.DefaultSenparcWeixinSetting = senparcWeixinSetting.Value;
  76. #endregion
  77. }
  78. }
  79. }