日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

理解并使用ASP.NET的高级配置

發布時間:2024/4/14 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理解并使用ASP.NET的高级配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

引言: 本文將討論ASP.NET應用的高級配置方法,在文中將討論的一些配置如下:為ASP.NET進程設置獨立的ID標記;配置ASP.NET網站或者網

站目錄的訪問權限;處理自定義配置事件等。除了以上提到的問題,本文還將討論從machine.config文件繼承和重寫部分ASP.NET配置信息,<Location>標記也將在本文中討論。

?

ASP.NET配置

我們都知道,使用ASP是不需要也沒有地方可以配置的(IIS配置除外),因此,我們不能針對一些特定的網站應用或者特定的網站目錄,設置一些特殊配置,可以這樣說,ASP的應用,是比較“傻瓜化”的,網站設計者對網站,只能通過程序而不能通過系統配置來實現對網站的有效管理。和ASP不一樣,ASP.NET通過XML格式的文件Machine.Config和Web.Config來完成對網站和網站目錄的配置。對于一個網站整體而言,整個服務器的配置信息保存在Machine.Config文件中,該文件的具體位置在%system32%\Microsoft.NET\Framework\[版本號]\Config目錄,它包含了運行一個ASP.NET服務器需要的所有配置信息。當你建立一個新的WEB Project的時候,VS.NET 會自動建立一個WEB.Config文件,WEB.Config包含了各種專門針對一個具體應用的一些特殊的配置,比如Session的管理、錯誤捕捉等配置。一個WEB.Config可以從Machine.Config繼承和重寫部分備置信息。因此,對于ASP.NET而言,針對一個具體的ASP.NET應用或者一個具體的網站目錄,是有兩部分設置可以配置的,一是針對整個服務器的Machine.Config配置,另外一個是針對該網站或者該目錄的Web.Config配置,一般的,Web.Config存在于獨立網站的根目錄,它對該目錄和目錄下的子目錄起作用。

本文將討論的一些具體配置如下:

  • <authorization>:訪問授權信息的配置;

  • <identity>:改變ASP.NET應用的工作進程,繼承、重寫和拒絕重寫相同配置;

  • <sessionState>:繼承、重寫和拒絕重寫相同配置;

  • <appSettings>:重寫和拒絕重寫相同配置;

例子程序

為了說明以上問題,我們建立了一個ASP.NET例子程序ConfigApplication,以下是這個程序的以下詳細信息:

Solution

ConfigApplication.sln

Project Name

ConfigApplication

Language

C#

Build

Release

以下圖片是ConfigApplication的文件結構:

以下是另外一個網站CustomConfig的一些信息:

Solution

CustomConfig.sln

Project Name

CustomConfig

File Name

ConfigHandler.cs

Language

C#

Build

Release

<authorization>

WEB.Config中的<authorization>標記使用<allow>和<deny>子標記來實現配置訪問控制權限。在這里,需要注意的一點是,這里的訪問控制只對ASP.NET本身的資源有用,比如:ASPX、ASMX、ASCX文件資源,對于非ASP.NET資源,比如ASP、TXT、圖像文件等,都不能提供訪問控制。以下是實現該配置的標記:

<authorization>

<allow users="comma-separated list of users"

roles="comma-separated list of roles"

verbs="comma-separated list of verbs" />

<deny users="comma-separated list of users"

roles="comma-separated list of roles"

verbs="comma-separated list of verbs" />

</authorization>

以上標記中,<Allow>標記定義可以訪問資源的用戶,<Deny>標記定義不許訪問資源的用戶。比如,以下標記就定義用戶“wcb02h26\Niranjan”可以訪問Web.Config文件所在文件夾及其子文件夾的資源,其他所有用戶均不能訪問該文件夾的資源(注意使用了<deny users=”*”>標記)。

<authorization >

<allow users="wcb02h26\Niranjan" />

<deny users="*"/>

</authorization>

以上設置可以在ConfigApplication應用的根目錄下的Web.Config文件找到。在該應用的根目錄下面,有RootFolderForm.aspx文件,如果用戶訪問該文件,ASP.NET將調用Windows的登錄對話框(圖二)

當用戶通過驗證以后,將見到以下頁面(圖三),在這個頁面中,顯示了登錄用戶的信息:

以上的設置可以在該應用的子目錄中實現繼承或者重寫,例子程序中,根目錄包含一個子目錄“Subfolder1”,現在,讓我們來看看怎樣實現用戶“wcb02h26\Niranjan”不能訪問“Subfolder1”,但是;另外一個用戶“wcb02h26\test”卻可以訪問。為了實現重寫配置,我們需要在目錄“Subfolder1”的根目錄添加一個WEB.Config配置文件:

<?xmlversion="1.0"encoding="utf-8"?>

<configuration>

< system.web >

<! -- For authorization code -- >

< authorization >

< allow users ="wcb02h26\test" />

< deny users ="*"/>

</ authorization >

</ system.web >

</configuration>

當我們訪問“Subfolder1”目錄下的“SubFolder1Form.aspx”文件的時候,ASP.NET將調用Windows登錄對話框,并且只許用戶“wcb02h26\test”訪問。然而,特別需要注意的是,以上的配置并不能對圖像文件等非ASP.NET資源起作用,也就是說,我們不能期望非ASP.NET資源也可以受到訪問控制。

除了使用上面提到的“User”標記以外,如果我們需要對一組用戶實現訪問控制,就可以使用“roles”標記,使用“Verbs”標記,我們還可以對訪問類型進行控制。以下的舉例,實現wcb02h26計算機的所有Administrator組用戶自由訪問根目錄下的ASP.NET資源,但是任何人都不能從頁面提交(Post)信息給服務器。

<?xmlversion="1.0"encoding="utf-8"?>

<configuration>

< system.web >

<! -- For authorization code -- >

< authorization >

< allow roles ="wcb02h26\administrators" verbs ="GET"/>

< deny users ="*" verbs ="POST"/>

</ authorization >

</ system.web >

</configuration>

以下是頁面SubFolder2Form.aspx的運行截圖(圖四):

如果用戶點擊“Submit”按鈕提交信息,將出現以下錯誤頁面(圖五):

如果從以上配置信息中去掉“<deny>”標記,用戶就可以隨意提交信息而不會出現錯誤了。

以上我們介紹了對網站資源進行訪問控制的一些配置,特別需要注意的是,和ASP中通過數據庫實現訪問控制一樣,這里的資源訪問控制,也只針對專門的ASP.NET 資源,非ASP.NET 資源,瀏覽者是可以隨意訪問的。

<identity>

這個標記用來控制ASP.NET應用的“身份”,以下是這個標記的具體使用:

<identity impersonate="true|false"

userName="username"

password="password"

/>

<identity>標記決定ASP.NET應用使用哪一個用戶賬號來運行,在Machine.Config中,默認的, impersonate是設置為“False”的。當調用根目錄下的RootFolderForm.aspx文件的時候,會將程序使用的用戶顯示出來(圖六):

以上的設置可以通過修改Machine.Config文件來實現,打開該文件,并將相關內容修改如下:

<identity impersonate="true"

userName="wcb02h26\Niranjan"

password="venezia143"/>

當運行RootFolderForm.aspx的時候,將得到一個錯誤信息,指明“identity”不能被修改。這是因為,默認的,ASP.NET不能將進程委派給別的用戶,為了解決這個問題,我們必須修改本地安全策略。打開“管理工具”->“本地安全策略”,點擊“本地策略”文件夾下的“用戶權利指派”,雙擊“作為服務登錄”并增加“ASPNET”賬號,參照下圖(圖七)設置。重新啟動服務器,當再次運行RootFolderForm.aspx的時候,將看到顯示出“wcb02h26\Niranjan”。

這里,Identity可以針對不同的具體應用設置不同的值,下面我們為“ConfigApplication”設置不同的值,對Machine.Config作以下修改:

修改Identity值為True:<identityimpersonate="true"/>

增加以下內容到Machine.Config文件的<system.web>標記末尾,<configuration>標記前面。

<locationpath="Default Web Site/ConfigApplication" allowOverride="false">

< system.web >

< identity impersonate ="true" userName ="wcb02h26\Niranjan" password ="venezia143" />

</ system.web >

</location>

以上的“Location”部分可以通過“Path”設置特定WEB應用的Identity,“allowOverride”可以設置是否可以被應用的WEB.Config設置重寫。在我們的舉例中,我們使用用戶“wcb02h26\Niranjan”運行ASP.NET,因為“allowOverride”設置為“False”,所以,這個設置不能被Web.Config重寫,這樣設置以后,當運行RootFolderForm.aspx的時候,我們看不出和上面提到的有什么區別,修改Web.Config文件的相關部分:

<identity userName="wcb02h26\test" password="test123"/>

這時再運行頁面,將看到以下錯誤信息(圖八),這時,就是“allowOverride="false"”這個設置生效了:

<SessionState>

SessionState用來保存ASP.NET應用的Session信息,在這里,我們不討論具體的Session應用等問題,而是重點關注Machine.Config的有關Session的一些設置怎樣允許和不允許某一個具體應用的Web.Config重寫的問題。

<Location>標記允許我們為一個具體的程序設置獨立的值,allowOverride屬性用來定義所有針對ASP.NET的設置都在機器層面起作用,而不能被具體程序的WEB.Config所改變。Machine.Config設置文件和Web.Config設置文件中,<sessionState>的默認設置如下:

<sessionState

mode="InProc"

stateConnectionString="tcpip=127.0.0.1:42424"

sqlConnectionString="data source= 127.0.0.1;userid=sa;password="

cookieless="false"

timeout="20"

/>

現在,我們修改以上默認設置,為程序“ConfigApplication”設置一些特殊的值:

<sessionState

mode="StateServer"

stateConnectionString="tcpip=127.0.0.1:42424"

timeout="60"

/>

以上的設置保存程序的Session保留時間長為60分鐘,如果管理員希望以上的設置不被具體的應用所重寫,他就必須在以上的<Location>段增加一個allowOverride屬性,并且,將這個屬性的值設置為“False”。以下是程序“ConfigApplication”中與Session有關的一些設置:

<!-- For "Default Web Site/ConfigApplication" application -->

<locationpath="Default Web Site/ConfigApplication" allowOverride="false">

< system.web >

< identity impersonate ="true"

userName="wcb02h26\Niranjan"

password="venezia143"

/>

< sessionState mode ="StateServer"

stateConnectionString="tcpip=127.0.0.1:42424"

timeout="60"

/>

</ system.web >

</location>

以上設置的identity段,我們在前面已經詳細討論過,在SessionState段中,設置Session的保留時間為60分鐘,與Machine.Config的設置完全相同。

現在,我們講以上的<SessionState>段全部刪除,運行RootFolderForm.aspx頁面,可以發現,頁面可以正常無誤的輸出。現在,修改Web.Config中<SessionState>部分的值,繼續運行RootFolderForm.aspx頁面,我們發現出現以下錯誤信息(圖九):

但是,如果Machine.Config的“allowOverride”屬性設置為“True”,即使在應用的Web.Config中修改了相關設置,也不會出現以上的錯誤信息頁面,而且,Web.Config中的設置將發生作用,而Machine.Config中的設置將不再有效。

<appSettings>

本節我們將介紹怎樣繼承和重寫Machine.Config中的<appSettings>設置。以下是Machine.config中,針對程序“ConfigApplication”的一些專門設置,注意設置中“allowOverride”屬性是設置為“False”的。

<!-- For "Default Web Site/ConfigApplication" application -->

<locationpath="Default Web Site/ConfigApplication" allowOverride="false">

< system.web >

< identity impersonate ="true"

userName="wcb02h26\Niranjan"

password="venezia143"/>

< sessionState mode ="InProc"

stateConnectionString="tcpip=127.0.0.1:42424"

sqlConnectionString="data source=127.0.0.1;user id=sa;password="

cookieless="false"timeout="30"/>

</ system.web >

< appSettings >

< add key ="myKey" value ="Value from machine.config" />

</ appSettings >

</location>

在以上的設置中,我們發現有一個新增加的鍵“myKey”,它的值為“Value from machine.config”。在頁面RootFolderForm.aspx中,我們在Page_Load部分增加以下代碼段:

// For <appSettings>

string strValue = System.Configuration.ConfigurationSettings.AppSettings["myKey"];

Response.Write("<h1> Value of myKey = " + strValue + "</h1>");

運行RootFolderForm.aspx頁面,我們可以看到,“Value from machine.config”顯示在頁面上(圖十)。

由這里我們可以發現,加入Page_Load中的代碼其實就是顯示MyKey這個鍵的值。

現在,在程序的WebConfig.config部分,我們同樣增加一個MyKey鍵,將它的值設置為“Value from web.config”,以利于區別。

<appSettings>

< add key ="myKey" value ="Value from web.config" />

</ appSettings >

再一次運行頁面,將出現錯誤信息(圖十一):

因為在Machine.Config中,我們已經設置“allowOverride”為“False”,這樣,當Web.Config中設置同樣的鍵時,就出現了錯誤。我們可以將Machine.Config中的“allowOverride”設置為“True”,再一次運行頁面,將不會出現錯誤信息,Web.Config中設置的值也會正常顯示(圖十二):

另外,當Machine.Config中的“allowOverride”設置為“False”以后,即使在Web.Config中設置新的鍵,也不能正常運行,同樣出現錯誤信息。

轉載于:https://www.cnblogs.com/chinafine/archive/2007/02/14/650194.html

總結

以上是生活随笔為你收集整理的理解并使用ASP.NET的高级配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。