在我們第一次寫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文件單獨進行設置。
記憶點:
configSections: 配置節處理程序聲明。通常我們會在此處申明我們需要設置的節點,並在后面對節點中的詳細值,或者屬性進行設置。
appSetting: 特定應用程序配置。此處能方便的幫助我們對應用程序指定一些簡單,基本的設置。比如我們有一個商城活動應用程序,我們需要設定
一個可控的商城活動起始時間和結束時間,我們可以在此進行設置。
system.Web: 控制Asp.net運行時的行為.
customErrors:自定義異常 mode : 具有On,Off,RemoteOnly 3種狀態。On表示始終顯示自定義的信息; Off表示始終顯示詳細的asp.net錯誤信息;
RemoteOnly表示只對不在本地Web服務器上運行的用戶顯示自定義信息.
對於不同狀態的異常,我們可以指定對於的提示頁面。
sessionState: 會話配置 Inproc 進程內存儲,StateServer 第三方狀態服務器存儲,SqlServer 數據庫存儲。 在不同的場景或者需求下,
我們可以指定如何存儲我們的會話狀態。
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應用程序環境是如何運行的。