背景

在创建网站的项目,总是会看到Web.config这个文件,它是用来干什么的呢?还有咱们自己也可以新建Global.asax文件,它是用来干什么的呢。在我实现一个网页上显示历史访问人数和在线人数的时候,有一种Global.asax文件和Web.config文件相似的错觉。所以就在这里详细了解一下。

Global.asax

Global.asax是一个全局文件,一个ASP.NET的应用程序文件,是从从HttpApplication基类派生的类。
响应的是应用程序级别和会话级别事件
当需要处理应用程序事件或会话事件时,可建立使用Global.asax文件

包含的事件

1、在HttpApplication 类的第一个实例被创建时,该事件被触发。它允许你创建可以由所有HttpApplication 实例访问的对象。 这是在应用程序中给应用程序级的变量赋值或指定对所有用户必须保持的状态的理想位置。(应用程序启动时,执行。)

protected void Application_Start(object sender, EventArgs e)
{
}

2、在一个新用户访问应用程序 Web 站点时,该事件被触发。(会话开始时,执行)

protected void Session_Start(object sender, EventArgs e)
{
}

3、在接收到一个应用程序请求时触发。对于一个请求来说,它是第一个被触发的事件,请求一般是用户输入的一个页面请求(URL)
protected void Application_BeginRequest(object sender, EventArgs e)
{
}

4、在安全模块建立起当前用户的有效的身份时,该事件被触发。在这个时候,用户的凭据将会被验证。

protected void Application_AuthenticateRequest(object sender, EventArgs e){}

5、当应用程序中遇到一个未处理的异常时,该事件被触发。

protected void Application_Error(object sender, EventArgs e)
{//在出现未处理的错误时运行的代码
}

6、在 InProc 模式下运行时,当一个用户的会话超时、结束或他们离开应用程序 Web 站点时,该事件被触发。(会话结束或过期时,执行)

protected void Session_End(object sender, EventArgs e)
{
}

7、在HttpApplication 类的最后一个实例被销毁时,该事件被触发。在一个应用程序的生命周期内它只被触发一次。应用程序关闭时,该事件被触发。(应用程序结束时,执行)

protected void Application_End(object sender, EventArgs e)
{
}

Web.config

Web.config是一个配置文件,是基于XML的文本文件。
在发布Web应用程序时,Web.config文件并不编译进dll文件中,将来有变化时,可直接用记事本打开Web.config文件进行编辑修改,很方便。
包含的结点
1、appSettings节点:主要用来存储asp.net应用程序的一些配置信息,比如上传文件的保存路径等

<appSettings> <add key="***" value="***"/>
</appSettings>

2、connectionStrings节点:主要用于配置数据库连接的

<connectionStrings> <!--SQL Server数据库配置--> <add name="***" connectionString="Data Source=***;Initial Catalog=****;User ID=***;Password=***"/>
</connectionStrings>

代码中的对应

//读取web.config节点配置
string connectionString = ConfigurationManager.ConnectionStrings["***"].ConnectionString;
//实例化SqlConnection对象
SqlConnection connection = new SqlConnection(connectionString);

3、compilation节点:配置 ASP.NET 使用的所有编译设置,。默认的debug属性为“true”,即允许调试。交付使用后应设为false。

//允许调式
<compilation debug="true">......
</compilation>

4、authentication节点:设置asp.net身份验证模式,有四种。
mode属性:

身份验证类型 描述
Windows 默认的身份验证形式,用于任何形式的IIS身份验证。Windows身份验证,适用于域用户或者局域网用户
Forms 基于ASP.NET窗体的身份验证作为默认的身份验证模式。表单验证,依靠网站开发人员进行身份验证
Passport Microsoft Passport身份验证作为默认的身份验证模式。使用微软提供的身份验证服务进行身份验证。
None 没有身份验证。用户匿名用户和可以提供其自己的身份验证的应用程序
<authentication mode="Windows|Forms|Passport|None">
</authentication>

5、customErrors节点:用于定义一些自定义错误信息的信息
defaultRedirect属性(可选):
表示应用程序发生错误时重定向到的默认URL,如果没有指定该属性则显示一般性错误
Mode属性(必选):
(1)On 表示在本地和远程用户都会看到自定义错误信息。
(2)Off 禁用自定义错误信息,本地和远程用户都会看到详细的错误信息。
(3)RemoteOnly 表示本地用户将看到详细错误信息,而远程用户将会看到自定义错误信息。

<customErrors
       defaultRedirect="url"mode="On|Off|RemoteOnly"><error statusCode="statuscode" redirect="url"/>
</customErrors>

error子节点:重定向到我们自定义的错误页面
6、httpHandlers节点:于根据用户请求的URL和HTTP谓词将用户的请求交给相应的处理程序。可以针对某个特定目录下指定的特殊文件进行特殊处理。可以在配置级别的任何层次配置此节点

<httpHandlers>//禁止访问aaa目录下的任何txt文件<add path="aaa/*.txt" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
</httpHandlers>

7、sessionState节点:用于配置当前asp.net应用程序的会话状态配置
mode属性:

属性值 说明
Custom 使用自定义数据来存储会话状态数据。
InProc 默认值。由asp.net辅助进程来存储会话状态数据。
Off 禁用会话状态。
SQLServer 使用进程外SQL Server数据库保存会话状态数据。
<sessionState cookieless="false" mode="InProc" timeout="30" />
</sessionState >

8、pages节点:用于表示对特定页设置

属性名 说明
buffer 是否启用了 HTTP 响应缓冲。
enableViewStateMac 是否应该对页的视图状态运行计算机身份验证检查 (MAC),以放置用户篡改,默认为false,如果设置为true将会引起性能的降低。
validateRequest 是否验证用户输入中有跨站点脚本攻击和SQL注入式漏洞攻击,默认为true,如果出现匹配情况就会发 HttpRequestValidationException 异常。对于包含有在线文本编辑器页面一般自行验证用户输入而将此属性设为false。
<pages buffer="*" enableViewStateMac="*" validateRequest="*"/>

9、globalization节点:用于配置应用程序的全球化设置

属性名 说明
fileEncoding 可选属性。设置.aspx、.asmx 和 .asax 文件的存储编码
requestEncoding 可选属性。设置客户端请求的编码,默认为UTF-8
responseEncoding 可选属性。设置服务器端响应的编码,默认为UTF-8
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8"/>

关于配置文件,其他请见:https://blog.csdn.net/cxh6863/article/details/82054978

Global.asax与Web.config的比较

Web.config是对程序中应用程序的配置,效用范围在它所在目录
Global.asax是全局的,是整个网站总体的设置
Global.asax是一个可选的文件,Web.config是一个必有的文件

【ASP.NET】Global.asax与Web.config相关推荐

  1. ASP.NET Global.asax详解

    最近在研究bbsmax的代码,但是一直不知道入口在哪里,然后就对各个文件分析了,然后终于在对global.asax文件查看的时候看到Application_BeginRequest才明白入口,所以现在 ...

  2. 使用ASP.NET Global.asax 文件

    Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序安全性以及其它一些任务.下面让我们详细看 ...

  3. 让asp.net程序在修改web.config后不重启

    默认情况下web.config修改后,asp.net程序会被重启.为了防止程序重启,要修改machine.config 文件. machine.config默认在C:\WINDOWS\Microsof ...

  4. (译)利用ASP.NET加密和解密Web.config中连接字符串

    介绍 这篇文章我将介绍如何利用ASP.NET来加密和解密Web.config中连接字符串 背景描述 在以前的博客中,我写了许多关于介绍 Asp.net, Gridview, SQL Server, A ...

  5. asp.net权限控制配置web.config

    项目下 有三个文件夹 A,B,C 验正方式是 Forms 验正 我要设置他们的访问权限为, A,匿名可访问 B,普通用户授权后才能访问 C,只允许管理员访问 <configuration> ...

  6. ASP.NET2.0里的web.config配置接口API(转)

    ASP.NET2.0里的配置接口API ASP.NET2.0里的配置API接口函数允许我们读/写配置文件----包括对web.config和machine.config的读写.您可以读写您自己应用程序 ...

  7. pages 元素(ASP.NET 设置架构)web.config 详解

    pages 元素(ASP.NET 设置架构)    buffer="[True|False]"    enableEventValidation="[True|False ...

  8. asp.net代码中修改web.config节点

    在有些情况下,要在代码中读取一种全局变量,把这种全局变量放在web.config是一种常见的手段.但是这个变量不会一个固定的值,会根据实际情况而发生变化,比如在需要读取一个配置文件的路径,而这个路径是 ...

  9. [asp.netMVC]通过configSource提高web.config配置灵活性

    转载连接:http://www.cnblogs.com/Gyoung/p/3590778.html 通过configSource提高web.config配置灵活性 很多时候我们会有这样的情况,开发环境 ...

最新文章

  1. Android开发之SpannableString具体解释
  2. 如何在Visual Studio 2010中使用CppUTest建立TDD的Code Kata的环境
  3. Easyexcel文件下载时,中文名称显示为下划线
  4. mysql+%3c%3e+cdata,bbed 使用实现 drop index 操作
  5. 安卓案例:LayoutCreator演示
  6. Java编程中组合、继承和代理的区别
  7. BZOJ:1816 [Cqoi2010]扑克牌 (贪心或二分答案)
  8. Response.Redirect导致session丢失的解决办法
  9. duet二重奏hp_二重奏Duet Game pc版|二重奏电脑版下载_v1.7_9号软件下载
  10. Win10系统完全卸载52好压的方法
  11. raid5两块硬盘掉线数据恢复-服务器磁盘阵列数据恢复方法
  12. IgH详解五、从站扫描流程
  13. 计算机考在职研究生有用吗,报考计算机在职研究生有用吗?
  14. 体检报告录入有误,到底是谁的错?
  15. oracle 配置不能保存,Oracle Net Manager保存网络配置提示无效条目Error writing entr
  16. 指尖江湖李忘生鸿蒙初开,《剑网3:指尖江湖》李忘生战斗攻略解析
  17. 铁路计算机联锁应用,Profisafe在铁路车站计算机联锁控制系统中的应用
  18. 老扬州(褚少)倾情推荐的扬州特色菜
  19. vasp+boltzTrap2计算材料的热电性能
  20. 【手把手】分布式定时任务调度解析之Elastic-Job

热门文章

  1. [IC笔试题] FIFO深度计算
  2. 12、Stay_Hungry__Stay_Foolish(译文)
  3. 检测鼠标上滑还是下滑
  4. matlab三天写论文!截面空间计量模型实战
  5. Vue框架基本页面的使用模板
  6. UKey电子签章:涉密文件轻松签,无需部署、即插即用
  7. 【李开复】给家长的一封信(八)
  8. CMS识别 -- TideFinger
  9. 智慧军营部队车辆管理系统软件
  10. Ansoft SIMPLORER 6.0 (多领域仿真软件)\