Startup.cs 3.5 KB

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