博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]NopCommerce之旅: 应用启动
阅读量:6370 次
发布时间:2019-06-23

本文共 2631 字,大约阅读时间需要 8 分钟。

本文转自:

 

一、基础介绍

文件(也称为 ASP.NET 应用程序文件)是一个可选文件,该文件包含响应 ASP.NET 或 所引发的应用程序级别和会话级别事件的代码。

Application_Start是其中一个事件,在HttpApplication 类的第一个实例被创建时,该事件被触发它允许你创建可以由所有HttpApplication 实例访问的对象。

简单来说,Application_Start()就是一个ASP.NET应用程序启动时执行的方法,可以理解为应用程序入口。

二、代码分析Application_Start()

1.出于安全考虑,去除X-AspNetMvc-Version头

2.初始化上下文

3.判断是否初始化数据库

  3.1 加载配置文件~/App_Data/Settings.txt

  3.2 读取内容,若存在连接字符串则说明已初始化数据库

4.清空视图引擎,添加自定义视图引擎ThemeableRazorViewEngine,支持前台和后台页面分离,及主题适配。

5.增加一些功能性的元数据

6.注册常见的MVC物件,包括Area,Route

7.关闭MVC默认的标注特性Model验证,添加FluentValidation(一种验证组件)

8.启动定时任务

  8.1 初始化所有创建的定时任务

  8.2 启动定时任务线程

9.根据配置,是否启动MiniProfiler(ASP.NET MVC的性能分析工具,监控网站性能)

  9.1 安装时默认为false,并配置在[dbo].[Setting]表,Name为storeinformationsettings.displayminiprofilerinpublicstore

  9.2 配置方法

    9.2.1 进入管理页面,进入配置菜单

      

    9.2.2 检索storeinformationsettings.displayminiprofilerinpublicstore,定位该条目,修改Value值

      

    9.2.3 启动效果,在页面左上角可看到该页面执行时间,参考MiniProfiler相关资料

      

10.记录应用启动日志

  10.1 通过依赖注入实例化

  10.2 日志写入数据库,表[dbo].[Log]

11.代码如下

1         protected void Application_Start() 2 { 3 //disable "X-AspNetMvc-Version" header name 4 MvcHandler.DisableMvcResponseHeader = true; 5 6 //initialize engine context 7 EngineContext.Initialize(false); 8 9 bool databaseInstalled = DataSettingsHelper.DatabaseIsInstalled(); 10 if (databaseInstalled) 11 { 12 //remove all view engines 13 ViewEngines.Engines.Clear(); 14 //except the themeable razor view engine we use 15 ViewEngines.Engines.Add(new ThemeableRazorViewEngine()); 16 } 17 18 //Add some functionality on top of the default ModelMetadataProvider 19 ModelMetadataProviders.Current = new NopMetadataProvider(); 20 21 //Registering some regular mvc stuff 22 AreaRegistration.RegisterAllAreas(); 23 RegisterRoutes(RouteTable.Routes); 24 25 //fluent validation 26 DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; 27 ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(new NopValidatorFactory())); 28 29 //start scheduled tasks 30 if (databaseInstalled) 31 { 32 TaskManager.Instance.Initialize(); 33 TaskManager.Instance.Start(); 34 } 35 36 //miniprofiler 37 if (databaseInstalled) 38 { 39 if (EngineContext.Current.Resolve
().DisplayMiniProfilerInPublicStore) 40 { 41 GlobalFilters.Filters.Add(new ProfilingActionFilter()); 42 } 43 } 44 45 //log application start 46 if (databaseInstalled) 47 { 48 try 49 { 50 //log 51 var logger = EngineContext.Current.Resolve
(); 52 logger.Information("Application started", null, null); 53 } 54 catch (Exception) 55 { 56 //don't throw new exception if occurs 57 } 58 } 59 }

 

 
 
分类:

 

转载地址:http://lvema.baihongyu.com/

你可能感兴趣的文章
java数组遍历——iterator和for方法
查看>>
Linux程序存储结构与进程结构堆和栈的区别【转】
查看>>
重置 radio 和 checkbox 的样式
查看>>
Android实战简易教程-第二十三枪(基于Baas的用户注冊和登录模块实现!)
查看>>
oc59--匿名分类
查看>>
redis 持久化
查看>>
机器学习算法总结
查看>>
高效的找出两个List中的不同元素
查看>>
Revit二次钢筋
查看>>
Vertx简介
查看>>
项目经理在项目各阶段的工作重点-更新版
查看>>
s3c2440中U-boot移植时执行cp.b提示:Flash not Erased【转】
查看>>
docker Redis的主从配置
查看>>
博文参考:Java编程中“为了性能”尽量要做到的一些地方
查看>>
【JAVASCRIPT】jquery实现ajax无刷新评论
查看>>
flex---->MXML语法
查看>>
mysql日志设置优化
查看>>
安装oracle遇到的故障
查看>>
进一步了解String
查看>>
centos6 yum安装nginx、php-fpm
查看>>