[转]NopCommerce之旅: 应用启动

本文转自:http://www.cnblogs.com/devilsky/p/5359881.html

我的NopCommerce之旅(6): 应用启动

一、基础介绍

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

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<StoreInformationSettings>().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<ILogger>();
52                     logger.Information("Application started", null, null);
53                 }
54                 catch (Exception)
55                 {
56                     //don‘t throw new exception if occurs
57                 }
58             }
59         }

时间: 2024-08-28 19:12:39

[转]NopCommerce之旅: 应用启动的相关文章

我的NopCommerce之旅(8): 路由分析

一.导图和基础介绍 本文主要介绍NopCommerce的路由机制,网上有一篇不错的文章,有兴趣的可以看看NopCommerce源码架构详解--对seo友好Url的路由机制实现源码分析 SEO,Search Engine Optimization,中文叫做搜索引擎优化,主要是为了提高网站关键词排名,提高访问量.SEO是一个很广的话题,我们这里主要了解NopCommerce的友好Url机制(它是实现SEO的一个步骤). 二.承上启下 我的NopCommerce之旅(6): 应用启动中介绍在应用启动时

我的NopCommerce之旅(6): 应用启动

一.基础介绍 Global.asax 文件(也称为 ASP.NET 应用程序文件)是一个可选文件,该文件包含响应 ASP.NET 或 HTTP 模块所引发的应用程序级别和会话级别事件的代码. Application_Start是其中一个事件,在HttpApplication 类的第一个实例被创建时,该事件被触发它允许你创建可以由所有HttpApplication 实例访问的对象. 简单来说,Application_Start()就是一个ASP.NET应用程序启动时执行的方法,可以理解为应用程序入

我的NopCommerce之旅(1): 系统综述

1.概述 NopCommerce是一个开源的购物网站,它的特点是Pluggable modular/layered architecture(可插拔模块分层架构) 2.特色介绍 1.适配手机端 2.支持多个商店 3.支持多个供应商,分离虚拟物品和实体货物(虚拟物品是不需要配送的) 4.产品功能方面,包括产品属性.产品比较.库存管理.价格.产品下载(电子书.音乐等).产品评价反馈 5.搜索引擎优化(面向Google搜索的优化) 6.买单方面,包括电话订单.支持多币种.可配置物品基础信息.SSL安全

我的NopCommerce之旅(9): 编写Plugin实例

一.基础介绍 ——In computing, a plug-in (or plugin) is a set of software components that add specific abilities to a larger software application (Wikipedia). Plugin,即插件,用来做NopCommerce的功能扩展.NopCommerce源码本身提供了一些插件供参考使用.本篇文章通过阅读官方文档进行实践总结,主要讲解如何编写一个数据持久化的NopCo

我的NopCommerce之旅(5): 缓存

一.基础知识 1.什么是cache Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在于Web服务器和客户端(浏览器)之间的副本. 2.为什么要用cache 即cache的作用,有以下几点: 2.1.减少网络带宽消耗: 2.2.降低服务器压力: 2.3.减少网络延迟.加快页面打开速度. 3.cache的分类 常见分类如下: 3.1.数据库数据缓存: 3.2.服务器端缓存: a.代理服务器缓存 b.CDN缓存 3.3.浏览器缓存: 3.4.Web应用缓存 二.NopCommer

我的NopCommerce之旅(3): 系统代码结构分析

1.概述 基于MVC 2.详细描述 \Libraries\Nop.Core 核心类,包括缓存.事件.帮助类.业务对象(订单.客户实体) \Libraries\Nop.Data 数据访问层,采用Entity Framework Code-First \Libraries\Nop.Services 核心服务层,包括业务逻辑,校验,数据计算 Projects into \Plugins\ solution folder 插件,生成的DLL自动拷贝到\Presentation\Nop.Web\Plugi

我的NopCommerce之旅(2): 系统环境及技术分析

1.系统环境 IIS7.0 or above ASP.NET 4.5(MVC 5.0) .NET Framework 4.5.1 or above VS 2012 or above 2.架构设计 Pluggable modular/layered architecture Inversion of Control(IOC,控制反转) and Dependency Injection(DI,依赖注入) 3.开发技术 Entity Framework,及其CodeFirst ASP.NET MVC

看看美团如何进行数据治理平台的建设与实践?

背景 作为一家高度数字化和技术驱动的公司,美团非常重视数据价值的挖掘.在公司日常运行中,通过各种数据分析挖掘手段,为公司发展决策和业务开展提供数据支持.经过多年的发展,美团酒旅内部形成了一套完整的解决方案,核心由数据仓库+各种数据平台的方式实现.其中数据仓库整合各业务线的数据,消灭数据孤岛:各种数据平台拥有不同的特色和定位,例如:自助报表平台.专业数据分析平台.CRM数据平台.各业务方向绩效考核平台等,满足各类数据分析挖掘需求.早期数据仓库与各种数据平台的体系架构如图1所示: 图1 酒旅早期各数

Android漫游记(6)---APP启动之旅(I)

Android基于Linux2.6+内核,我们看一张图,以对Android系统的架构有个感性的认识. 我们从Kernel层简单说明: 1.Kernel层:基于Linux2.6+内核,同时做了一些嵌入式环境做了一些针对性的优化调整. 2.Libraries层:包括Bionic C库,以及HAL(硬件驱动接口抽象)等API. 3.Android Runtime(ART)层:包含核心应用库和Dalvik虚拟机. 4.Application Framework层:纯JAVA的API框架,包括Activi