using System; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Winsoft.GOV.XF.WebApi.WXCore.Utilities; using Senparc.Weixin.Entities; using Microsoft.Extensions.Options; using Senparc.Weixin.MP.Containers; using Winsoft.GOV.XF.WebApi.WXCore.Data; using Microsoft.EntityFrameworkCore; namespace Winsoft.GOV.XF.WebApi.WXCore { public class Startup { public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); //Senparc.Weixin.SDK 配置 builder.AddJsonFile("SenparcWeixin.json", optional: true); //提供网站根目录 Server.AppDomainAppPath = env.ContentRootPath; } public IConfigurationRoot Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); services.Configure(Configuration.GetSection("SenparcWeixinSetting")); // Adds a default in-memory implementation of IDistributedCache. services.AddDistributedMemoryCache(); services.AddDbContext(options => options.UseMySql(Configuration.GetConnectionString("DefaultConnection"))); services.AddSession(options => { // Set a short timeout for easy testing. options.IdleTimeout = TimeSpan.FromSeconds(10); options.CookieHttpOnly = true; }); services.AddTransient(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IOptions senparcWeixinSetting, DbInitializer dbInitializer) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); loggerFactory.AddFile(Configuration.GetSection("Logging")); app.UseStaticFiles(); app.UseSession(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=WXToken}/{action=Index}/{id?}"); }); #region 微信相关 //注册微信 AccessTokenContainer.Register(senparcWeixinSetting.Value.WeixinAppId, senparcWeixinSetting.Value.WeixinAppSecret); dbInitializer.Initialize(); //DBConfig.DefaultConnectionString = Configuration["Data:DefaultConnection:ConnectionString"]; //Senparc.Weixin SDK 配置 Senparc.Weixin.Config.DefaultSenparcWeixinSetting = senparcWeixinSetting.Value; #endregion } } }