配置文件,讓程序更加靈活


     配置文件之所以靈活,是因為它使用純文本XML編寫,如果需求發生改變,可以方便的修改應用程序的配置信息,且無需重新編譯。

     Config分為Machine.Config和***.Config,見名知意,Machine.Config是存儲一台機器上的所有應用程序的配置信息,而***.Config是儲存 *** 應用程序的配置信息。

    今天我給大家介紹的是Web.Config

    Web.config 文件是一個XML文本文件,它用來存儲ASP.NET Web應用程序的配置信息,它可以出現在應用程序的每一個目錄中。當你通過.NET新建一個Web應用程序后,默認情況下會在根目錄自動創建一個默認的Web.config文件,包括默認的配置設置,所有的子目錄都繼承它的配置設置。如果你想修改子目錄的配置設置,你可以在該子目錄下新建一個Web.config文件。它可以提供除從父目錄繼承的配置信息以外的配置信息,也可以重寫或修改父目錄中定義的設置。


    這里有典型的代碼和詳細的說明:

<?xml version="1.0"?>
<!--
注意: 除了手動編輯此文件以外,您還可以使用
Web 管理工具來配置應用程序的設置。可以使用 Visual Studio 中的
“網站”->“Asp.Net 配置”選項。
設置和注釋的完整列表在 machine.config.comments 中,該文件通常位於
\Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration>
<!--應用程序設置-->
<appSettings>
<add key="con" value="server=.;database=northwind;Integrated Security=True"/>
<add key="select" value="select * from employees"/>
</appSettings>
<!--頁配置設置-->
<system.web>
<!--buffer為false 服務端以16k為單位逐漸向客戶端傳送,頁面會一段一段的出來;
為true,在服務端會形成整個頁面再發送過來。-->
<pages buffer="true" enableViewState="true " controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
<!--
在制作程序時,這個應該啟用調試功能。
如果網站制作完成了,發布出去了。這個應該設置為false ,不需要調試。
如果打開調試后,影響速度
-->
<compilation debug="true" targetFramework="4.0"/>
<!--
身份驗證和授權 Forms類型
name:用於身份驗證的Cookie名稱
loginUrl:登錄頁。如果沒有身份驗證Cookie,客戶端將會重定向該頁。
protection:值為all,應用程序同時使用數據驗證和加密來保護Cookie(存儲加密,
傳遞過程中是否被篡改)
值為none,加密和驗證都禁用。
timeout:這段時間后,身份驗證的Cookie將過期,單位為分鍾,默認為30
path:由應用程序發布的Cookie路徑,默認值是反斜杠 /
-->
<authentication mode="Forms">
<!--身份驗證-->
<forms name="authCre" loginUrl="login.aspx" protection="All">
<!--在文件中指定用戶名和密碼時,在前台使用
System.Web.Security.FormsAuthentication.Authenticate(txtUserName.Text, txtPwd.Text)
判斷是否與配置文件中的信息一致。
-->
<credentials passwordFormat="Clear">
<!--credentials [kri'denʃəlz]證書-->
<user name="aaa" password="aaa"/>
<user name="bbb" password="bbb"/>
</credentials>
</forms>
</authentication>
<authorization>
<!--授權-->
<deny users="aaa,?"/>
<!--?表示任何一個用戶,即匿名-->
</authorization>
<!--
如果在執行請求的過程中出現未處理的錯誤,可以顯示的 html 錯誤頁,
以代替錯誤堆棧跟蹤。
mode:On 表示在本地和遠程用戶都會看到自定義錯誤信息。
Off 禁用自定義錯誤信息,本地和遠程用戶都會看到詳細的錯誤信息。
RemoteOnly 表示本地用戶將看到詳細錯誤信息,而遠程用戶將會看到自定義錯誤信息。
-->
<customErrors mode="RemoteOnly" defaultRedirect="error.aspx">
<error statusCode="403" redirect="NoAccess.htm"/>
<error statusCode="404" redirect="FileNotFound.htm"/>
</customErrors>
</system.web>
</configuration>

    這些是基本的、常用的配置信息,但是我還想補充幾點:

1、<httpRuntime> 

作用:配置ASP.NET HTTP 運行庫設置。

示例:控制用戶上傳文件最大為4M,最長時間為60秒,最多請求數為100

<httpRuntime maxRequestLength="4096" executionTimeout="60" appRequestQueueLimit="100"/>


2、<sessionState> 
作用:為當前應用程序配置會話狀態設置(如設置是否啟用會話狀態,會話狀態保存位置)。
示例
<sessionState mode="InProc" cookieless="true" timeout="20"/>
</sessionState>
注: 
mode="InProc"表示:在本地儲存會話狀態(你也可以選擇儲存在遠程服務器或SQL服務器中或不啟用會話狀態)
cookieless="true"表示:如果用戶瀏覽器不支持Cookie時啟用會話狀態(默認為False)
timeout="20"表示:會話可以處於空閑狀態的分鍾數


3、<Location>
作用:設置不同子目錄下應用程序的數據庫鏈接
如果在一個虛擬目錄下有多個子目錄,每一個子目錄下下的web應用程序都需要連接不同的數據庫,這如何做呢??
一種方法是在每一個子目錄下分別建立一個web.config,用它來設置這個目錄下的數據庫連接。但這種方法的問題是需要維護每一個了目錄下的web.config。
 
方法二,是只在虛擬目錄下建立一個web.config,在它里面設置每一個子目錄下的應用程序的數據庫連接。說到這里,你會想到上面的第二種方法,使用多個不同的key值來設置,這的確是一個辦法。
 
當然是第二種方法好了,在虛擬目錄下布置web.config,在其中使用location標記,使用同一個key值來連接數據庫,這樣做的好處很明顯,因為用同一個key值,將導致在所有目錄下的應用程序中,都可以使用共同的語句來連接數據庫,這在程序以后發生位置遷移時,並不用修改程序中連接數據庫的語句。
具體設置如下:

        <location path="news">
<appsettings>
<add key="connstring" value="uid=flyangel;password=3.1415926;database=news;server=(local)" />
</appsettings>
</location>
<location path="bbs">
<appsettings>
<add key="connstring" value="uid=flyangel;password=3.1415926;database=bbs;server=(local)" />
</appsettings>
</location>
<location path="soft">
<appsettings>
<add key="connstring" value="uid=flyangel;password=3.1415926;database=soft;server=(local)" />
</appsettings>
</location>

       注:上例中news、bbs、soft分別是虛擬目錄下的子目錄。
       程序中使用連接時,采用下面的方法:
       public function getconnectionstring()
           configurationsettings.appsettings().item("connstring")
       end sub 


在思想層次看配置文件,之所以能夠使程序變的靈活,能夠博得人們的喜愛,是因為他能更好的應對變化。

   

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com