在咱们第一次写web应用程序的时候,咱们很快会接触到一个文件,那就是配置文件——web.config。咱们的第一个比较深入
的使用就是咱们不须要把咱们的数据库连接零散的写在咱们的代码中了,咱们只须要在web.config文件中注明,这样咱们能够
方便的在咱们须要的时候,读取它,更改它。
那么什么是配置文件呢? 它用来作什么呢?
咱们能够看一下windows操做系统中用户配置文件的定义:
咱们能够看到配置文件帮助咱们预设置了一些基本的参数,条件。用来帮助咱们的进程,应用程序,更或者操做系统运行的时候
能够在咱们预先设定好的环境下运行。
真正了解,并认识配置文件,可以帮助咱们更好的明白咱们的应用程序纠结是如何运行的。在咱们在进行web应用程序的开发,测试
部署的过程当中,有三个配置文件也须要咱们去很好的认识,并牢记他们。
他们分别是:
machine.config, applicationhost.config, web.config
Machine.config
其实当咱们作开发的时候,有一条很是重要的原则就是:咱们所写的全部代码,建立的全部文件都是给人看的,而给机器看的是咱们编译后的文件。
因此从文件名称咱们就能够推测出,这个文件中所这是的全部信息,
是给整台服务器内的全部web应用程序的。
machine.config文件的具体位置在%system32%Microsoft.NETFramework[版本号]Config目录下。
Web.config
web.config继承成于machine.config文件,同时咱们能够
对特定的web.application文件单独进行设置。
记忆点:html
configSections: 配置节处理程序声明。一般咱们会在此处申明咱们须要设置的节点,并在后面对节点中的详细值,或者属性进行设置。web
appSetting: 特定应用程序配置。此处能方便的帮助咱们对应用程序指定一些简单,基本的设置。好比咱们有一个商城活动应用程序,咱们须要设定数据库
一个可控的商城活动起始时间和结束时间,咱们能够在此进行设置。
windows
system.Web: 控制Asp.net运行时的行为. api
customErrors:自定义异常 mode : 具备On,Off,RemoteOnly 3种状态。On表示始终显示自定义的信息; Off表示始终显示详细的asp.net错误信息;缓存
RemoteOnly表示只对不在本地Web服务器上运行的用户显示自定义信息. 安全
对于不一样状态的异常,咱们能够指定对于的提示页面。服务器
sessionState: 会话配置 Inproc 进程内存储,StateServer 第三方状态服务器存储,SqlServer 数据库存储。 在不一样的场景或者需求下,session
咱们能够指定如何存储咱们的会话状态。
app
authentication: Windows、Forms、PassPort、None
httpRuntime :配置 ASP.NET HTTP 运行库设置。该节能够在计算机、站点、应用程序和子目录级别声明。
示例:控制用户上传文件最大为4M,最长时间为60秒,最多请求数为100
<httpRuntime maxRequestLength= "4096 " executionTimeout= "60 " appRequestQueueLimit= "100 "/>
HttpModule: Module自定义设置,能够去除非必须的Module,或者自定义Module,如防止盗链, IP安全管理等
HttpHandler: Handler自定义设置,或者添加自定义Handler
ApplicationHost.config
IIS为咱们提供了一个高度集成的Web应用程序平台,用来管理并运行咱们的web应用程序。
而对于iis7.0+ 使用applicationHost.config
为web服务器和进程保存IIS配置。
applicationHost.config在%system32%inetsvr\config目录下。
记忆点:
1, 应用程序池设置:
<system.applicationHost>
<applicationPools>
<add name="DefaultAppPool" managedRuntimeVersion="v4.0" />
<add name="ASP.NET v4.0" managedRuntimeVersion="v4.0" />
<add name="ASP.NET v4.0 Classic" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" />
<applicationPoolDefaults>
<processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="false" />
</applicationPoolDefaults>
</applicationPools>
2,对特定的站点制定部署位置和访问协议,端口
<sites>
<site name="Default Web Site" id="1" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/" physicalPath="E:\*" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:80:" />
3,为Asp.net 管道,设置全局Module, Http缓存,匿名验证等
<globalModules>
<add name="HttpCacheModule" image="%windir%\System32\inetsrv\cachhttp.dll" />
<add name="AnonymousAuthenticationModule" image="%windir%\System32\inetsrv\authanon.dll" />
</globalModules>
此处使咱们了解到咱们的Http缓存是在什么时候处理的,并在何处被加载。同时咱们也能够指定自定义的缓存处理。
4, 用以过滤请求,判断请求是否为asp.net动态页面请求,若是是传递给aspnet_wp,执行请求,并返回html
<isapiFilters>
<filter name="ASP.Net_4.0_64bit" path="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv4.0,bitness64" />
<filter name="ASP.Net_4.0_32bit" path="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv4.0,bitness32" />
</isapiFilters>
其实对于配置文件,所须要关注的类容远不止这些,不少暂时也没法所有的表现出来。
但对于这三个配置文件的设置也确实能帮助咱们理解整个web应用程序环境是如何运行的。