天天看點

總結一下常用web.config公共配置。

總結一下常用web.config公共配置。

a)連接配接字元串

b)配置會話狀态

c)編譯配置

d)浏覽器的功能

e)定制錯誤

f)身份驗證

g)授權

h)鎖定配置設定

i)ASP.NET頁面配置

j)配置ASP.NET運作時設定

公共配置設定知識點

一.連接配接字元串

注意:把連結字元串寫在一下兩個标記的其中一個标記

appSettings--在1.0和1.1版本中,連接配接字元串是寫在appSettings标記中的

connectionStrings ---在2.0版本以後,連接配接字元串寫在connectionStrings 标記中

1)使用ASPNET_REGIIS.EXE給配置檔案中的某個标記加密

讓我們來看看如何使用ASPNET_REGIIS.EXE工具來加密<connectionStrings>配置節。

  用VS.Net建立一個網站叫做EncryptTest,加入一個web.config檔案。然後加入如下的<connectionStrings>配置節:

<connectionStrings>

<add name="connstr" connectionString=

"data source=.\sqlexpress;initial catalog=

northwind;integrated security=true" />

</connectionStrings>我們簡單的加入了一個聯接字元串,指向了Northwind資料庫。然後打開default.aspx檔案,拖拽一個GridView控件,并在Page_Load中輸入如下代碼:

protected void Page_Load(object sender, EventArgs e)

{

string strConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;

SqlDataAdapter da = new SqlDataAdapter("select * from customers", strConn);

DataSet ds = new DataSet();

da.Fill(ds);

GridView1.DataSource = ds;

GridView1.DataBind();

} 這段代碼裡,我們用ConfigurationManager類從<connectionStrings>配置節讀取了聯接字元串。這裡用們有意的用了手動的方法代替了SqlDataSource空間,就是為了證明内置的類ConfigurationManager自動的機密了加密版本的聯機字元串。

現在打開Visual Studio 2005指令提示,執行下面的指令:

aspnet_regiis -pe "connectionStrings" -app "/encrypttest"

-pe開關用來指定web.config中需要加密的節(我們的例子裡是connectionStrings)。

-app開關用來指定IIS裡面的虛拟路徑

執行以後,如果你再檢視一下web.config檔案,你會看到這樣的情形:

<connectionStrings configProtectionProvider=

"RsaProtectedConfigurationProvider">

<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"

xmlns="http://www.w3.org/2001/04/xmlenc#">

<EncryptionMethod Algorithm=

"http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />

<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">

<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">

<EncryptionMethod Algorithm=

"http://www.w3.org/2001/04/xmlenc#rsa-1_5" />

<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">

<KeyName>Rsa Key</KeyName>

</KeyInfo>

<CipherData>

<CipherValue>NW4gFUtlA3XkbKu42FQ3kYV8EKmwzy9r53vrI2rjV

ZFqjsr00/MwS6TWqjnsguN09kWvNIrbfWu5+Gi+DLFhYnGm2NcuaCy

Vic8f5e0Q8u3E7zk2MegZmiri5bSELE1fZneWz4oFb+MHqA94ZO3Be

XBlocou6ydtmJPXZCqLsDQ=</CipherValue>

</CipherData>

</EncryptedKey>

</KeyInfo>

<CipherData>

<CipherValue>T2fswq6Rt7g7VSNUnoe4kNFGSluWCBReQf3DRbXao/

sWaWs4mrJAI6Xy0zNDHY5pKXUUF9Kep2wG84rMVx0QtLIUjBaUKCnrm

Eb+53oYNPjN4Kf5zcPyWoaWwcus4LnJYNtg3oGJUvavZ0tjGXH9+5gB

w/xMrtfDcYAIom9l/IMcO92BKrvimjn/k4Mr8VXxGpvdMkAC3+e6dtW

JeUgQGpepO+RNpWymB5kWj38LjMQ=</CipherValue>

</CipherData>

</EncryptedData>

</connectionStrings>這個工具已經用RsaProtectedConfigurationProvider(預設的提供者)加密了connectionStrings節點,并且将加密過的标簽傳回給配置檔案。你還可以指定具體的Protected Configuration Provider(加密保護配置提供者),使用-prov開關來指定。很簡單,不是麼?現在,浏覽你的web頁面。這個web頁面将會在GridView标記裡正确的顯示Customers表的内容,這說明ConfigurationManager類在讀取連接配接字元串的時候自動解密了其中的資訊。

2)使用ASPNET_REGIIS.EXE解密配置節

如果你需要在開發過程中對連接配接串進行些改動要怎麼辦?不用擔心,ASPNET_REGIIS.EXE工具同樣支援解密節點,僅僅需要執行下面的指令就會恢複到你原來的未加密的版本。aspnet_regiis -pd "connectionStrings" -app "/encrypttest"唯一的差別就是,我們用-pd開關代替了-pa開關。

Encryption and decrypting via code

The task of encrypting and decrypting web.config can also be achieved via code. Let's see how.

Add a new web form to the same web site and design it as shown below:

通過代碼加密與解密 加密與解密web.config功能同樣可以通過代碼來完成。

在"Encrypt Connection String"按鈕的Click事件中加入如下代碼:

protected void Button1_Click(object sender, EventArgs e)

{

Configuration config = WebConfigurationManager.

OpenWebConfiguration(Request.ApplicationPath);

ConfigurationSection section = config.ConnectionStrings;

if (!section.SectionInformation.IsProtected)

{

section.SectionInformation.ProtectSection

("RsaProtectedConfigurationProvider");

section.SectionInformation.ForceSave = true;

config.Save(ConfigurationSaveMode.Modified);

}

}

 二、配置會話狀态

  <sessionState mode="InProc" timeout="10"></sessionState>

  将session存放在本應用的程序中,一旦本應用結束,或者伺服器停止服務,session就會被釋放掉

 <sessionState mode="StateServer" timeout="10"></sessionState>将session放置在伺服器的另一個程序中,但是還是放在了伺服器的記憶體中,如果伺服器斷電等意外發生了,session依然會丢失

aspnet_regsql

三、編譯配置

 <compilation debug="true" targetFramework="4.0" />

四、浏覽器的功能

浏覽器檔案

五、定制錯誤配置

 <customErrors mode="On" defaultRedirect="abc.htm">

        <error statusCode="404" redirect="notfindpage.htm"/>

      </customErrors>

----------------------

雖然我們發送給使用者的公用錯誤資訊是安全的,就是說它不會威脅到應用程式的秘密,但是這樣的資訊并不好看。也許你希望使用者永遠也看不到這樣的資訊。相反,當處理請求的過程中,如果發生了一個為處理的錯誤,你希望能夠顯示自己的“定制錯誤頁面”,顯示出自己的品牌以及特定的錯誤資訊。

向ASP.NET 應用程式中增加定制錯誤資訊非常容易。首先,編寫自己的 web頁面,它可以是任何類型的檔案:.htm,.aspx,.asp,等等。然後在應用程式的config.web檔案中修改配置資訊,讓它指向這個檔案。

舉例說明,以下這個配置資訊說明在發生了任何未能預定處理錯誤的情況下,浏覽器都應該被重定向到“ErrorPage.aspx”頁面:

<configuration>

            <customerrors mode="remoteonly" defaultredirect="ErrorPage.aspx" /></configuration>

<customerrors>

标記中的“defaultredirect”屬性定義了在發生錯誤的情況下,使用者将被重定向到的“預設”頁面。或者,也可以根據響應的http代碼狀态,重定向到其它的頁面來覆寫這個預設值。例如:重定向到一個特殊的“未找到檔案”錯誤頁面、“非法通路”錯誤頁面、“伺服器沖突”錯誤頁面等等。

舉例說明,以下的配置資訊覆寫3個特定的http 狀态代碼,所有其它錯誤都傳回到一個預設頁面:

<customErrors mode="RemoteOnly" defaultRedirect="404/404.html">

   <error statusCode="500" redirect="404/404.html"></error>

   <error statusCode="404" redirect="404/404.html"></error>

   <error statusCode="403" redirect="404/404.html"></error>

  </customErrors>

在定制錯誤頁面上有一件事我們已經遇到過,那就是雖然它們對于已經完成的情況非常有用,然而在開發過程中卻非常難以對付。因為你預想到在開發過程中會有bug,并且當你發現的時候,真的希望看到實際的錯誤資訊跟蹤。為了解決這個問題,<customerrors>标記支援一個有3個值的“mode”屬性:

“on”:意思是總是發出定制錯誤頁面;

“off”:意思是從不發出定制錯誤頁面(你總是看到原始的錯誤資訊);

“remoteonly”:意思是隻有當遠端浏覽器點選站點時才發出定制錯誤頁面(而在實際機器上點選站點的開發人員看到的是詳細的錯誤資訊)。

六、身份驗證配置

身份驗證的三種方法:Windows  Forms Passport

<authentication mode="Windows"/>

  Forms 将基于 ASP.NET 窗體的身份驗證指定為身份驗證模式。   

  Passport 将 Microsoft Passport 指定為身份驗證模式。 

  Windows 将 Windows 指定為身份驗證模式。在使用 Internet 資訊服務 (IIS) 身份驗證方法(基本、簡要、內建 Windows (NTLM/Kerberos) 或證書)時适用此模式。 

轉載于:https://www.cnblogs.com/elaineJJ/archive/2013/01/04/2843813.html