webconfig配置全面介紹要點(diǎn).doc_第1頁(yè)
webconfig配置全面介紹要點(diǎn).doc_第2頁(yè)
webconfig配置全面介紹要點(diǎn).doc_第3頁(yè)
webconfig配置全面介紹要點(diǎn).doc_第4頁(yè)
webconfig配置全面介紹要點(diǎn).doc_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余15頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

一、認(rèn)識(shí)Web.config文件Web.config 文件是一個(gè)xml文本文件,它用來(lái)儲(chǔ)存 asp.NET Web 應(yīng)用程序的配置信息(如最常用的設(shè)置asp.NET Web 應(yīng)用程序的身份驗(yàn)證方式),它可以出現(xiàn)在應(yīng)用程序的每一個(gè)目錄中。當(dāng)你通過(guò).NET新建一個(gè)Web應(yīng)用程序后,默認(rèn)情況下會(huì)在根目錄自動(dòng)創(chuàng)建一個(gè)默認(rèn)的Web.config文件,包括默認(rèn)的配置設(shè)置,所有的子目錄都繼承它的配置設(shè)置。如果你想修改子目錄的配置設(shè)置,你可以在該子目錄下新建一個(gè)Web.config文件。它可以提供除從父目錄繼承的配置信息以外的配置信息,也可以重寫(xiě)或修改父目錄中定義的設(shè)置。(一).Web.Config是以xml文件規(guī)范存儲(chǔ),配置文件分為以下格式1.配置節(jié)處理程序聲明特點(diǎn):位于配置文件的頂部,包含在標(biāo)志中。2.特定應(yīng)用程序配置特點(diǎn): 位于中??梢远x應(yīng)用程序的全局常量設(shè)置等信息.3.配置節(jié)設(shè)置特點(diǎn): 位于節(jié)中,控制運(yùn)行時(shí)的行為.4.配置節(jié)組特點(diǎn): 用標(biāo)記,可以自定義分組,可以放到內(nèi)部或其它標(biāo)記的內(nèi)部.(二).配置節(jié)的每一節(jié)1.節(jié)根元素,其它節(jié)都是在它的內(nèi)部.2.節(jié)此節(jié)用于定義應(yīng)用程序設(shè)置項(xiàng)。對(duì)一些不確定設(shè)置,還可以讓用戶根據(jù)自己實(shí)際情況自己設(shè)置用法:I.定義了一個(gè)連接字符串常量,并且在實(shí)際應(yīng)用時(shí)可以修改連接字符串,不用修改程式代碼.II. 定義了一個(gè)錯(cuò)誤重定向頁(yè)面.3.節(jié)格式:I.default language: 定義后臺(tái)代碼語(yǔ)言,可以選擇c#和兩種語(yǔ)言.IIdebug : 為true時(shí),啟動(dòng)aspx調(diào)試;為false不啟動(dòng)aspx調(diào)試,因而可以提高應(yīng)用程序運(yùn)行時(shí)的性能。一般程序員在開(kāi)發(fā)時(shí)設(shè)置為true,交給客戶時(shí)設(shè)置為false.4.節(jié)格式:customErrors mode=RemoteOnly defaultRedirect=error.aspx/ I.mode : 具有On,Off,RemoteOnly 3種狀態(tài)。On表示始終顯示自定義的信息; Off表示始終顯示詳細(xì)的錯(cuò)誤信息; RemoteOnly表示只對(duì)不在本地Web服務(wù)器上運(yùn)行的用戶顯示自定義信息.II.defaultRedirect: 用于出現(xiàn)錯(cuò)誤時(shí)重定向的URL地址. 是可選的III.statusCode: 指明錯(cuò)誤狀態(tài)碼,表明一種特定的出錯(cuò)狀態(tài).IV. redirect:錯(cuò)誤重定向的URL.5.節(jié)格式: I.requestEncoding: 它用來(lái)檢查每一個(gè)發(fā)來(lái)請(qǐng)求的編碼. II.responseEncoding: 用于檢查發(fā)回的響應(yīng)內(nèi)容編碼.III.fileEncoding: 用于檢查aspx,asax等文件解析的默認(rèn)編碼. 6.節(jié)格式:I.mode: 分為off,Inproc,StateServer,SqlServer幾種狀態(tài)mode = InProc 存儲(chǔ)在進(jìn)程中特點(diǎn):具有最佳的性能,速度最快,但不能跨多臺(tái)服務(wù)器存儲(chǔ)共享.mode = StateServer 存儲(chǔ)在狀態(tài)服務(wù)器中特點(diǎn): 當(dāng)需要跨服務(wù)器維護(hù)用戶會(huì)話信息時(shí),使用此方法。但是信息存儲(chǔ)在狀態(tài)服務(wù)器上,一旦狀態(tài)服務(wù)器出現(xiàn)故障,信息將丟失. mode=SqlServer 存儲(chǔ)在sql server中特點(diǎn):工作負(fù)載會(huì)變大,但信息不會(huì)丟失.II. stateConnectionString :指定應(yīng)用程序存儲(chǔ)遠(yuǎn)程會(huì)話狀態(tài)的服務(wù)器名,默認(rèn)為本機(jī)III.sqlConnectionString:當(dāng)用會(huì)話狀態(tài)數(shù)據(jù)庫(kù)時(shí),在這里設(shè)置連接字符串IV. Cookieless:設(shè)置為true時(shí),表示不使用cookie會(huì)話狀態(tài)來(lái)標(biāo)識(shí)客戶;否則,相反.V. TimeOut:用來(lái)定義會(huì)話狀態(tài)存儲(chǔ)的時(shí)間,超過(guò)期限,將自動(dòng)終止會(huì)話.7.節(jié)格式: I.Windows: 使用IIS驗(yàn)證方式II.Forms: 使用基于窗體的驗(yàn)證方式III.Passport: 采用Passport cookie驗(yàn)證模式IV.None: 不采用任何驗(yàn)證方式里面內(nèi)嵌Forms節(jié)點(diǎn)的屬性涵義:I.Name: 指定完成身份驗(yàn)證的Http cookie的名稱(chēng).II.LoginUrl: 如果未通過(guò)驗(yàn)證或超時(shí)后重定向的頁(yè)面URL,一般為登錄頁(yè)面,讓用戶重新登錄III.Protection: 指定 cookie數(shù)據(jù)的保護(hù)方式.可設(shè)置為: All None Encryption Validation四種保護(hù)方式a. All表示加密數(shù)據(jù),并進(jìn)行有效性驗(yàn)證兩種方式b. None表示不保護(hù)Cookie.c. Encryption表示對(duì)Cookie內(nèi)容進(jìn)行加密d. validation表示對(duì)Cookie內(nèi)容進(jìn)行有效性驗(yàn)證IV. TimeOut: 指定Cookie的失效時(shí)間. 超時(shí)后要重新登錄.在運(yùn)行時(shí)對(duì)Web.config文件的修改不需要重啟服務(wù)就可以生效(注: 節(jié)例外)。當(dāng)然Web.config文件是可以擴(kuò)展的。你可以自定義新配置參數(shù)并編寫(xiě)配置節(jié)處理程序以對(duì)它們進(jìn)行處理。web.config配置文件(默認(rèn)的配置設(shè)置)以下所有的代碼都應(yīng)該位于和之間,出于學(xué)習(xí)的目的下面的示例都省略了這段xml標(biāo)記。1、 節(jié)作用:配置 asp.NET 身份驗(yàn)證支持(為Windows、Forms、PassPort、None四種)。該元素只能在計(jì)算機(jī)、站點(diǎn)或應(yīng)用程序級(jí)別聲明。 元素必需與 節(jié)配合使用。示例:以下示例為基于窗體(Forms)的身份驗(yàn)證配置站點(diǎn),當(dāng)沒(méi)有登陸的用戶訪問(wèn)需要身份驗(yàn)證的網(wǎng)頁(yè),網(wǎng)頁(yè)自動(dòng)跳轉(zhuǎn)到登陸網(wǎng)頁(yè)。其中元素loginUrl表示登陸網(wǎng)頁(yè)的名稱(chēng),name表示Cookie名稱(chēng)。2、 節(jié)作用:控制對(duì) URL 資源的客戶端訪問(wèn)(如允許匿名用戶訪問(wèn))。此元素可以在任何級(jí)別(計(jì)算機(jī)、站點(diǎn)、應(yīng)用程序、子目錄或頁(yè))上聲明。必需與 節(jié)配合使用。示例:以下示例禁止匿名用戶的訪問(wèn) 注:你可以使用來(lái)獲取已經(jīng)過(guò)驗(yàn)證的當(dāng)前的用戶名;可以使用web.Security.FormsAuthentication.RedirectFromLoginPage方法將已驗(yàn)證的用戶重定向到用戶剛才請(qǐng)求的頁(yè)面.具體的3、節(jié)作用:配置 asp.NET 使用的所有編譯設(shè)置。默認(rèn)的debug屬性為“True”.在程序編譯完成交付使用之后應(yīng)將其設(shè)為False(Web.config文件中有詳細(xì)說(shuō)明,此處省略示例)4、 作用:為 asp.NET 應(yīng)用程序提供有關(guān)自定義錯(cuò)誤信息的信息。它不適用于 xml Web services 中發(fā)生的錯(cuò)誤。示例:當(dāng)發(fā)生錯(cuò)誤時(shí),將網(wǎng)頁(yè)跳轉(zhuǎn)到自定義的錯(cuò)誤頁(yè)面。其中元素defaultRedirect表示自定義的錯(cuò)誤網(wǎng)頁(yè)的名稱(chēng)。mode元素表示:對(duì)不在本地 Web 服務(wù)器上運(yùn)行的用戶顯示自定義(友好的)信息。5、節(jié)作用:配置 asp.NET HTTP 運(yùn)行庫(kù)設(shè)置。該節(jié)可以在計(jì)算機(jī)、站點(diǎn)、應(yīng)用程序和子目錄級(jí)別聲明。示例:控制用戶上傳文件最大為4M,最長(zhǎng)時(shí)間為60秒,最多請(qǐng)求數(shù)為1006、 作用:標(biāo)識(shí)特定于頁(yè)的配置設(shè)置(如是否啟用會(huì)話狀態(tài)、視圖狀態(tài),是否檢測(cè)用戶的輸入等)??梢栽谟?jì)算機(jī)、站點(diǎn)、應(yīng)用程序和子目錄級(jí)別聲明。示例:不檢測(cè)用戶在瀏覽器輸入的內(nèi)容中是否存在潛在的危險(xiǎn)數(shù)據(jù)(注:該項(xiàng)默認(rèn)是檢測(cè),如果你使用了不檢測(cè),一要對(duì)用戶的輸入進(jìn)行編碼或驗(yàn)證),在從客戶端回發(fā)頁(yè)時(shí)將檢查加密的視圖狀態(tài),以驗(yàn)證視圖狀態(tài)是否已在客戶端被篡改。(注:該項(xiàng)默認(rèn)是不驗(yàn)證)7、 作用:為當(dāng)前應(yīng)用程序配置會(huì)話狀態(tài)設(shè)置(如設(shè)置是否啟用會(huì)話狀態(tài),會(huì)話狀態(tài)保存位置)。示例:注:mode=InProc表示:在本地儲(chǔ)存會(huì)話狀態(tài)(你也可以選擇儲(chǔ)存在遠(yuǎn)程服務(wù)器或SAL服務(wù)器中或不啟用會(huì)話狀態(tài))cookieless=true表示:如果用戶瀏覽器不支持Cookie時(shí)啟用會(huì)話狀態(tài)(默認(rèn)為False)timeout=20表示:會(huì)話可以處于空閑狀態(tài)的分鐘數(shù)8、 作用:配置 asp.NET 跟蹤服務(wù),主要用來(lái)程序測(cè)試判斷哪里出錯(cuò)。示例:以下為Web.config中的默認(rèn)配置:注:enabled=false表示不啟用跟蹤;requestLimit=10表示指定在服務(wù)器上存儲(chǔ)的跟蹤請(qǐng)求的數(shù)目pageOutput=false表示只能通過(guò)跟蹤實(shí)用工具訪問(wèn)跟蹤輸出;traceMode=SortByTime表示以處理跟蹤的順序來(lái)顯示跟蹤信息localOnly=true 表示跟蹤查看器 (trace.axd) 只用于宿主 Web 服務(wù)器自定義Web.config文件配置自定義Web.config文件配置節(jié)過(guò)程分為兩步。1.在配置文件頂部 和 標(biāo)記之間聲明配置節(jié)的名稱(chēng)和處理該節(jié)中配置數(shù)據(jù)的 .NET Framework 類(lèi)的名稱(chēng)。2.是在 區(qū)域之后為聲明的節(jié)做實(shí)際的配置設(shè)置。示例:創(chuàng)建一個(gè)節(jié)存儲(chǔ)數(shù)據(jù)庫(kù)連接字符串 . 訪問(wèn)Web.config文件你可以通過(guò)使用ConfigurationSettings.AppSettings 靜態(tài)字符串集合來(lái)訪問(wèn) Web.config 文件示例:獲取上面例子中建立的連接字符串。例如:protected static string Isdebug = ConfigurationSettings.AppSettingsdebug二、web.config中的session配置詳解打開(kāi)某個(gè)應(yīng)用程序的配置文件Web.config后,我們會(huì)發(fā)現(xiàn)以下這段: 這一段就是配置應(yīng)用程序是如何存儲(chǔ)session信息的了。我們以下的各種操作主要是針對(duì)這一段配置展開(kāi)。讓我們先看看這一段配置中所包含的內(nèi)容的意思。sessionState節(jié)點(diǎn)的語(yǔ)法是這樣的:必須有的屬性是:屬性選項(xiàng)描述mode 設(shè)置將session信息存儲(chǔ)到哪里 Off 設(shè)置為不使用session功能, InProc 設(shè)置為將session存儲(chǔ)在進(jìn)程內(nèi),就是asp中的存儲(chǔ)方式,這是默認(rèn)值, StateServer 設(shè)置為將session存儲(chǔ)在獨(dú)立的狀態(tài)服務(wù)中, SQLServer 設(shè)置將session存儲(chǔ)在sql server中??蛇x的屬性是:屬性選項(xiàng)描述 cookieless 設(shè)置客戶端的session信息存儲(chǔ)到哪里, ture 使用Cookieless模式, false 使用Cookie模式,這是默認(rèn)值, timeout 設(shè)置經(jīng)過(guò)多少分鐘后服務(wù)器自動(dòng)放棄session信息,默認(rèn)為20分鐘。stateConnectionString 設(shè)置將session信息存儲(chǔ)在狀態(tài)服務(wù)中時(shí)使用的服務(wù)器名稱(chēng)和端口號(hào),例如:tcpip=:42424”。當(dāng)mode的值是StateServer是,這個(gè)屬性是必需的。sqlConnectionString 設(shè)置與sql server連接時(shí)的連接字符串。例如data source= localhost;Integrated Security=SSPI;Initial Catalog=northwind。當(dāng)mode的值是 SQLServer時(shí),這個(gè)屬性是必需的。stateNetworkTimeout 設(shè)置當(dāng)使用StateServer模式存儲(chǔ)session狀態(tài)時(shí),經(jīng)過(guò)多少秒空閑后,斷開(kāi)Web服務(wù)器與存儲(chǔ)狀態(tài)信息的服務(wù)器的tcp/IP連接的。默認(rèn)值是10秒鐘。asp.NET中客戶端session狀態(tài)的存儲(chǔ)在我們上面的session模型簡(jiǎn)介中,大家可以發(fā)現(xiàn)session狀態(tài)應(yīng)該存儲(chǔ)在兩個(gè)地方,分別是客戶端和服務(wù)器端??蛻舳酥回?fù)責(zé)保存相應(yīng)網(wǎng)站的SessionID,而其他的session信息則保存在服務(wù)器端。在asp中,客戶端的SessionID實(shí)際是以Cookie的形式存儲(chǔ)的。如果用戶在瀏覽器的設(shè)置中選擇了禁用Cookie,那末他也就無(wú)法享受session的便利之處了,甚至造成不能訪問(wèn)某些網(wǎng)站。為了解決以上問(wèn)題,在 asp.NET中客戶端的session信息存儲(chǔ)方式分為:Cookie和Cookieless兩種。asp.NET中,默認(rèn)狀態(tài)下,在客戶端還是使用Cookie存儲(chǔ)session信息的。如果我們想在客戶端使用Cookieless的方式存儲(chǔ)session信息的方法如下:找到當(dāng)前Web應(yīng)用程序的根目錄,打開(kāi)Web.Config文件,找到如下段落:這段話中的cookieless=false改為:cookieless=true,這樣,客戶端的session信息就不再使用 Cookie存儲(chǔ)了,而是將其通過(guò)URL存儲(chǔ)。關(guān)閉當(dāng)前的IE,打開(kāi)一個(gè)新IE,重新訪問(wèn)剛才的Web應(yīng)用程序,就會(huì)看到類(lèi)似下面的樣子:其中,http:/localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245) /default.aspx中黑體標(biāo)出的就是客戶端的session ID。注意,這段信息是由IIS自動(dòng)加上的,不會(huì)影響以前正常的連接。asp.NET中服務(wù)器端session狀態(tài)的存儲(chǔ)準(zhǔn)備工作:為了您能更好的體驗(yàn)到實(shí)驗(yàn)現(xiàn)象,您可以建立一個(gè)叫做SessionState.aspx的頁(yè)面,然后把以下這些代碼添加到中。Sub Session_Add(sender As Object, e As EventArgs) session(MySession) = text1.Value span1.InnerHtml = Session data updated! Your session contains: & session(MySession). ToString() & End SubSub CheckSession(sender As Object, eAs EventArgs) If (Session(MySession)Is Nothing) Then span1.InnerHtml = NOTHING, session DATA LOST! Else span1.InnerHtml = Your session contains: & session(MySession).ToString() & End IfEnd Sub 這個(gè)SessionState.aspx的頁(yè)面可以用來(lái)測(cè)試在當(dāng)前的服務(wù)器上是否丟失了session信息。將服務(wù)器session信息存儲(chǔ)在進(jìn)程中讓我們來(lái)回到Web.config文件的剛才那段段落中:當(dāng)mode的值是InProc時(shí),說(shuō)明服務(wù)器正在使用這種模式。這種方式和以前asp中的模式一樣,就是服務(wù)器將session信息存儲(chǔ)在IIS進(jìn)程中。當(dāng)IIS關(guān)閉、重起后,這些信息都會(huì)丟失。但是這種模式也有自己最大好處,就是性能最高。應(yīng)為所有的session信息都存儲(chǔ)在了IIS的進(jìn)程中,所以IIS能夠很快的訪問(wèn)到這些信息,這種模式的性能比進(jìn)程外存儲(chǔ)session信息或是在sql server中存儲(chǔ)session信息都要快上很多。這種模式也是asp.NET的默認(rèn)方式。好了,現(xiàn)在讓我們做個(gè)試驗(yàn)。打開(kāi)剛才的SessionState.aspx頁(yè)面,隨便輸入一些字符,使其存儲(chǔ)在session中。然后,讓我們讓IIS重起。注意,并不是使當(dāng)前的站點(diǎn)停止再開(kāi)始,而是在IIS中本機(jī)的機(jī)器名的節(jié)點(diǎn)上點(diǎn)擊鼠標(biāo)右鍵,選擇重新啟動(dòng)IIS。(想當(dāng)初使用NT4時(shí),重新啟動(dòng)IIS必須要重新啟動(dòng)計(jì)算機(jī)才行,微軟真是#$%&)返回到SessionState.aspx頁(yè)面中,檢查剛才的session信息,發(fā)現(xiàn)信息已經(jīng)丟失了。將服務(wù)器session信息存儲(chǔ)在進(jìn)程外首先,讓我們來(lái)打開(kāi)管理工具-服務(wù),找到名為:asp.NET State Service的服務(wù),啟動(dòng)它。實(shí)際上,這個(gè)服務(wù)就是啟動(dòng)一個(gè)要保存session信息的進(jìn)程。啟動(dòng)這個(gè)服務(wù)后,你可以從Windows任務(wù)管理器-進(jìn)程中看到一個(gè)名為 aspnet_state.exe的進(jìn)程,這個(gè)就是我們保存session信息的進(jìn)程。然后,回到Web.config文件中上述的段落中,將mode的值改為StateServer。保存文件后的重新打開(kāi)一個(gè)IE,打開(kāi) SessionState.aspx頁(yè)面,保存一些信息到session中。這時(shí),讓我們重起IIS,再回到SessionState.aspx頁(yè)面中查看剛才的session信息,發(fā)現(xiàn)沒(méi)有丟失。實(shí)際上,這種將session信息存儲(chǔ)在進(jìn)程外的方式不光指可以將信息存儲(chǔ)在本機(jī)的進(jìn)程外,還可以將session信息存儲(chǔ)在其他的服務(wù)器的進(jìn)程中。這時(shí),不光需要將mode的值改為StateServer,還需要在stateConnectionString中配置相應(yīng)的參數(shù)。例如你的計(jì)算你是,你想把session存儲(chǔ)在ip為的計(jì)算機(jī)的進(jìn)程中,就需要設(shè)置成這樣: stateConnectionString=tcpip=:42424。當(dāng)然,不要忘記在的計(jì)算機(jī)中裝上.NET Framework,并且啟動(dòng)asp.NET State Services服務(wù)。將服務(wù)器session信息存儲(chǔ)在sql server中首先,還是讓我們來(lái)做一些準(zhǔn)備工作。啟動(dòng)sql server和sql server代理服務(wù)。在sql server中執(zhí)行一個(gè)叫做 InstallSqlState.sql的腳本文件。這個(gè)腳本文件將在sql server中創(chuàng)建一個(gè)用來(lái)專(zhuān)門(mén)存儲(chǔ)session信息的數(shù)據(jù)庫(kù),及一個(gè)維護(hù)session信息數(shù)據(jù)庫(kù)的sql server代理作業(yè)。我們可以在以下路徑中找到那個(gè)文件:system drivewinntMicrosoft.NETFrameworkversion 然后打開(kāi)查詢(xún)分析器,連接到sql server服務(wù)器,打開(kāi)剛才的那個(gè)文件并且執(zhí)行。稍等片刻,數(shù)據(jù)庫(kù)及作業(yè)就建立好了。這時(shí),你可以打開(kāi)企業(yè)管理器,看到新增了一個(gè)叫ASPState的數(shù)據(jù)庫(kù)。但是這個(gè)數(shù)據(jù)庫(kù)中只是些存儲(chǔ)過(guò)程,沒(méi)有用戶表。實(shí)際上session信息是存儲(chǔ)在了tempdb 數(shù)據(jù)庫(kù)的ASPStateTempSessions表中的,另外一個(gè)ASPStateTempApplications表存儲(chǔ)了asp中 application對(duì)象信息。這兩個(gè)表也是剛才的那個(gè)腳本建立的。另外查看管理-SQL server代理-作業(yè),發(fā)現(xiàn)也多了一個(gè)叫做ASPState_Job_DeleteExpiredSessions的作業(yè),這個(gè)作業(yè)實(shí)際上就是每分鐘去ASPStateTempSessions 表中刪除過(guò)期的session信息的。接著,我們返回到Web.config文件,修改mode的值改為SQLServer。注意,還要同時(shí)修改sqlConnectionString的值,格式為:sqlConnectionString=data source=localhost; Integrated Security=SSPI;其中data source是指sql server服務(wù)器的ip地址,如果sql server與IIS是一臺(tái)機(jī)子,寫(xiě) 就行了。Integrated Security=SSPI的意思是使用Windows集成身份驗(yàn)證,這樣,訪問(wèn)數(shù)據(jù)庫(kù)將以asp.NET的身份進(jìn)行,通過(guò)如此配置,能夠獲得比使用userid=sa;password=口令的sql server驗(yàn)證方式更好的安全性。當(dāng)然,如果sql server運(yùn)行于另一臺(tái)計(jì)算機(jī)上,你可能會(huì)需要通過(guò)Active Directory域的方式來(lái)維護(hù)兩邊驗(yàn)證的一致性。同樣,讓我們做個(gè)試驗(yàn)。向SessionState.aspx中添加session信息,這時(shí)發(fā)現(xiàn)session信息已經(jīng)存在 sql server中了,即使你重起計(jì)算機(jī),剛才的session信息也不會(huì)丟失?,F(xiàn)在,你已經(jīng)完全看見(jiàn)了session信息到底是什么樣子的了,而且又是存儲(chǔ)在sql server中的,能干什么就看你的發(fā)揮了??偨Y(jié)三、 關(guān)于form認(rèn)證的一般設(shè)置 關(guān)于form認(rèn)證的一般設(shè)置:1: 在web.config中,加入form認(rèn)證; 2: 如果有注冊(cè)頁(yè)面時(shí)還應(yīng)該允許匿名用戶調(diào)用注冊(cè)頁(yè)面進(jìn)行注冊(cè);以下代碼應(yīng)該在之間,而不應(yīng)該包含到.之間;-表示允許匿名用戶對(duì) userReg.aspx頁(yè)面進(jìn)行訪問(wèn). 3 在登錄成功后要?jiǎng)?chuàng)建身份驗(yàn)證票, 表明已經(jīng)通過(guò)認(rèn)證的合法用戶;if(登陸成功)System.Web.Security.FormsAuthentication.SetAuthCookie(用戶名稱(chēng), false);四、訪問(wèn)Web.config文件你可以通過(guò)使用ConfigurationSettings.AppSettings 靜態(tài)字符串集合來(lái)訪問(wèn) Web.config 文件示例:獲取上面例子中建立的連接字符串。例如:protected static string Isdebug = ConfigurationSettings.AppSettingssconasp.Net性能優(yōu)化. (一).選擇會(huì)話狀態(tài)存儲(chǔ)方式 在Webconfig文件配置: 有三種方式存儲(chǔ)會(huì)話狀態(tài)信息: 1. 存儲(chǔ)在進(jìn)程中: 屬性mode = InProc 特點(diǎn): 具有最佳的性能,速度最快,但不能跨多臺(tái)服務(wù)器存儲(chǔ)共享. 2. 存儲(chǔ)在狀態(tài)服務(wù)器中: 屬性mode = StateServer 特點(diǎn): 當(dāng)需要跨服務(wù)器維護(hù)用戶會(huì)話信息時(shí),使用此方法。 但是信息存儲(chǔ)在狀態(tài)服務(wù)器上,一旦狀態(tài)服務(wù)器出現(xiàn)故障,信息將丟失 3. 存儲(chǔ)在sql server中: 屬性mode=SqlServer 特點(diǎn): 工作負(fù)載會(huì)變大,但信息不會(huì)丟失. 補(bǔ)充一點(diǎn): I. 由于某些頁(yè)面不需要會(huì)話狀態(tài),則可以將會(huì)話狀態(tài)禁用: 代碼如下: II.如果頁(yè)面需要訪問(wèn)會(huì)話變量但不允許修改它們,可以設(shè)置頁(yè)面會(huì)話狀態(tài)為只讀: 代碼如下: 使用時(shí)可以根據(jù)具體情況選擇某種方式(二).使用Page.IsPostBack Page.IsPostBack表示是否是從客戶端返回的. 初次運(yùn)行時(shí),不是從客戶端返回,它的值 為false,當(dāng)觸發(fā)頁(yè)面上的事件或刷新頁(yè)面時(shí),Page.IsPostBack由于是回發(fā)的,值變?yōu)閠rue; 一般在: Page_Load方法中用: private void Page_Load(Object sender,EventArgs e) if(!Page.IsPostBack) .; /初始化頁(yè)面的代碼。這些代碼第一次頁(yè)面初始化時(shí)執(zhí)行,當(dāng)?shù)诙位匕l(fā)時(shí), /不會(huì)再執(zhí)行。提高效率。 往往很多時(shí)候不得不用IsPostBack, 因?yàn)橛行┛丶跏蓟?,要保持它的狀態(tài). 例如: DropDownList,如果每次都初始化,則用戶無(wú)論選擇其選項(xiàng),都會(huì)被初始化為默認(rèn)值.(三).避免使用服務(wù)器控件 1.一般的靜態(tài)顯示信息,盡量不要用服務(wù)端控件顯示. 因?yàn)榉?wù)端控件需要回發(fā)服務(wù)端執(zhí)行, 會(huì)降低程序執(zhí)行效率,一般用顯示即可. 如果用了服務(wù)端控件,將: runat=server去掉,也會(huì)提高效率. 2.禁用服務(wù)端控件的狀態(tài)視圖,有些控件不需要維護(hù)其狀態(tài),可以設(shè)置其屬性: EnableViewState=false; 如果整個(gè)頁(yè)面控件都不需要維持狀態(tài)視圖,則可以設(shè)置整個(gè)頁(yè)面的狀態(tài)視力為false: 代碼如下: 3.在Web.Config文件中配置: asp.NET Sessionss可以在Web.config或Machine.config中的Sessionsstate元素中配置。 下面是在 Web.config中的設(shè)置的例子: (四).避免使用DataGrid 大家都知道DataGrid功能強(qiáng)大。但是功能強(qiáng)大的同時(shí),增加了性能上的開(kāi)銷(xiāo)。一般用其它控件: DataList 或Repeater控件能實(shí)現(xiàn)的,盡量不用DataGrid.(五).字符串操作 1.避免裝箱操作. 裝箱操作運(yùn)行效率比較低. 例如運(yùn)行兩個(gè)代碼段: string test=; for(for int i=0;i10000;i+) test = test + i; 和 string test=; for(for int i=0;i10000;i+) test = test + i.ToString(); 下面的代碼段顯然效率要高.因?yàn)閕是整型的,系統(tǒng)要先把i進(jìn)行裝箱轉(zhuǎn)換為string型的,再進(jìn)行連接. 需要時(shí)間 讀者可以Copy到自己機(jī)器上測(cè)試一下. 2.使用StringBulider類(lèi) 在進(jìn)行字符串連接時(shí): string str = str1 + str2 + .; 一般超過(guò)三項(xiàng)連接,最好用StringBuilder來(lái)代替string類(lèi). StringBuilder可以避免重新創(chuàng)建string 對(duì)象造成 的性能損失. 一般用于組裝sql語(yǔ)句時(shí)用到: StringBulider. 讀者可以到自己機(jī)器上測(cè)試一下.3.盡量少用: try catch finally 語(yǔ)句.此語(yǔ)句執(zhí)行效率比較低.(六).ADO.Net使用方面優(yōu)化 1.數(shù)據(jù)庫(kù)連接打開(kāi)和關(guān)閉。 在需要連接時(shí)打開(kāi),當(dāng)訪問(wèn)完數(shù)據(jù)庫(kù)要立刻關(guān)閉連接. 舉例說(shuō)明,還是看兩個(gè)代碼段: I. DataSet ds = new DataSet(); SqlConnection MyConnection = new SqlConnection(server=localhost; uid=sa; pwd=; database=NorthWind); SqlCommand myCommand = new SqlCommand(strSql,MyConnection); SqlDataAdapter myAdapter=new SqlDataAdapter(queryStr,connectionStr); MyConnection.Open(); /打開(kāi)連接 for(int i=0;i1000;i+) /for循環(huán)模擬取得數(shù)據(jù)前的商業(yè)邏輯操作 Thread.Sleep(1000); myAdapter.Fill(ds); for(int i=0;i1000;i+) /for循環(huán)模擬取得數(shù)據(jù)后的商業(yè)邏輯操作 Thread.Sleep(1000); MyConnection.Close(); /關(guān)閉連接

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論