using BBWY.Common.Http; using BBWY.Common.Models; using BBWY.Common.Extensions; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System; using System.IO; using System.Reflection; using System.Threading.Tasks; using System.Windows; using PJZS.Models; using System.Linq; using System.IO.MemoryMappedFiles; using System.Diagnostics; using Utils; namespace PJZS { /// /// Interaction logic for App.xaml /// public partial class App : Application { public IServiceProvider ServiceProvider { get; private set; } public IConfiguration Configuration { get; private set; } protected override void OnStartup(StartupEventArgs e) { var pjzsExeList = Process.GetProcessesByName("PJZS"); if (pjzsExeList != null && pjzsExeList.Count() > 1) { Environment.Exit(Environment.ExitCode); } var gl = new GlobalContext(); string userToken = string.Empty; #if DEBUG //齐越山鸡 userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNTM1MzMwMzI4ODkyMTQ5NzYwIiwidGVhbUlkIjoiMTUxNjk3NDI1MDU0MjUwMTg4OCIsInNvblRlYW1JZHMiOiIxNDM2Mjg4NTAwMjM1MjQzNTIwIiwiZXhwIjoxNjk0NjY5NjkxfQ.cSwro-7bGwOu92YejH9JhMenTai7Mvf99i2paQCmxIw"; #else var tokenResult = ReadMMF(); if (tokenResult.isOk) userToken = tokenResult.content; else { MessageBox.Show($"读取内存数据失败\r\n{tokenResult.content}", "提示"); Environment.Exit(0); } #endif gl.UserToken = userToken; #region 注册全局异常 this.DispatcherUnhandledException += App_DispatcherUnhandledException; ; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; #endregion var applicationPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); var builder = new ConfigurationBuilder().SetBasePath(applicationPath).AddJsonFile("appSettings.json", false, true); Configuration = builder.Build(); gl.BBYWApiHost = Configuration.GetSection("BBWYApiHost").Value; gl.MDSApiHost = Configuration.GetSection("MDSApiHost").Value; IServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddHttpClient(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(gl); serviceCollection.BatchRegisterServices(new Assembly[] { Assembly.Load("PJZS") }, typeof(IDenpendency)); serviceCollection.AddMapper(new MappingProfile()); ServiceProvider = serviceCollection.BuildServiceProvider(); base.OnStartup(e); } private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e) { throw new NotImplementedException(); } private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { throw new NotImplementedException(); } private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { throw new NotImplementedException(); } public (bool isOk, string content) ReadMMF() { try { var token = MemoryHelper.GetMemoryToken(); if (string.IsNullOrEmpty(token)) return (false, "token为空"); else return (true, token); //using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting(mapname)) //{ // using (var mmfStream = mmf.CreateViewStream(0, 1000, MemoryMappedFileAccess.ReadWrite)) // { // StreamReader reader = new StreamReader(mmfStream); // string jwt = reader.ReadToEnd().Replace("\0", "").TrimEnd(); // return (true, jwt); // } //} } catch (Exception ex) { return (false, ex.Message); } } } }