在咱們第一次寫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應用程序環境是如何運行的。