WebConfig配置詳解資料_第1頁(yè)
WebConfig配置詳解資料_第2頁(yè)
WebConfig配置詳解資料_第3頁(yè)
WebConfig配置詳解資料_第4頁(yè)
WebConfig配置詳解資料_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Web.config配置詳解

一、認(rèn)識(shí)Web.config文件

Web.config文件是一個(gè)XML文本文件,它用來儲(chǔ)存ASP.NETWeb應(yīng)用程序的配置信息(如

最常用的設(shè)置ASP.NETWeb應(yīng)用程序的身份驗(yàn)證方式),它可以出現(xiàn)在應(yīng)用程序的每一個(gè)目錄中。

當(dāng)你通過.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文件。它可以提供除從父目錄繼承的配置信息以外的配置信息,也

可以重寫或修改父目錄中定義的設(shè)置。

(-).Web.config是以XML文件規(guī)范存儲(chǔ),配置文件分為以下格式

1.配置行處理程序聲明

特點(diǎn):位于配置文件的頂部,包含在<confiqSections>標(biāo)志中。

2.特定應(yīng)用程序配置

特點(diǎn):位于<appSetting>中。可以定義應(yīng)用程序的全局常量設(shè)置等信息.

3.配置節(jié)設(shè)置

特點(diǎn):位于〈system.Web>節(jié)中,控制A運(yùn)行時(shí)的行為.

4.配置節(jié)組

特點(diǎn):用vsectionGroup>標(biāo)記,可以自定義分組,可以放到<configSections>內(nèi)部或其它<se

ctionGroup>標(biāo)記的內(nèi)部.

(二).配置節(jié)的每一節(jié)

1.<configuration>節(jié)

根元素,其它節(jié)都是在它的內(nèi)部.

2.<appSetting>節(jié)

此節(jié)用于定義應(yīng)用程序設(shè)置項(xiàng)。對(duì)一些不確定設(shè)置.,還可以讓用戶根據(jù)自己實(shí)際情況自己設(shè)置

用法:

I.

<appSettings>

<addkey="Conntction"value="server=192,168.85.66;userid=sa;password=;datab

ase=Info;7>

<appSettings>

定義了一個(gè)連接字符串常量,并且在實(shí)際應(yīng)用時(shí)可以修改連接字符串,不用修改程式代碼.

II.<appSettings>

<addkey="ErrPage"value="Error.aspx"/>

<appSettings>

定義了一個(gè)錯(cuò)誤重定向頁(yè)面.

3.<compilation>節(jié)

格式:

<compilation

defaultLanguage="c#"

debug="true"

/>

I.defaultlanguage:定義后臺(tái)代碼語言,可以選擇C#和VB.net兩種語言.

Ildebug:為true時(shí),后動(dòng)aspx調(diào)試;為false不啟動(dòng)aspx調(diào)試,因而可以提高應(yīng)用程斤運(yùn)行

時(shí)的性能。一股程序員在產(chǎn)發(fā)時(shí)設(shè)置為true,交給客戶時(shí)設(shè)置為false.

4.<customErrors>節(jié)

格式:

<customErrors

mode="RemoteOnly"

defaultRedirect="error.aspx"

<errorstatusCode='*440"redirect="err440page.aspx"/>

<errorstatusCode="500"redirect="errSOOPage.aspx"/>

/>

I.mode:具有OnQff,RemoteOnly3種狀態(tài)。On表示始終顯示自定義的信息;Off表示始終

顯示詳細(xì)的借誤信息;RemoteOnly表示只對(duì)不在本地Web服務(wù)器上運(yùn)行的用戶顯示自定義

信息.

II.defaultRedirect:用于出現(xiàn)錯(cuò)誤時(shí)重定向的URL地此罡可選的

Ill.statusCode:指明錯(cuò)誤狀態(tài)碼,表明一種特定的出錯(cuò)狀態(tài).

IV.redirect:錯(cuò)誤重定向的URL.

5.<globalization>節(jié)

格式:

<globalization

requestEncoding="utf"8"

responseEncoding="utf-8"

fileEncoding="utf-8"

/>

LrequestEncoding:它用來檢查每一個(gè)發(fā)來請(qǐng)求的編碼.

II.responseEncoding:用于檢查發(fā)回的響應(yīng)內(nèi)容編碼.

III.fileEncoding:用于檢查aspxzasax等文件解析的默認(rèn)編瑪.

6.<sessionState>節(jié)

格式:

<sessionstate

mode="InProc"

stateConnectionString="tcpip=:42424"

sqlConnectionString="datasource=127.0.0.l;Trusted_Connection=yes"

cookieless="false"

timeout="20"

/>

I.mode:分為off/nproc,StateServer,SqIServer幾種狀態(tài)

這里有詳細(xì)介紹此屬性:/chengking/archive/2005/10/27/518079.aspx

II.stateConnectionString:指定A應(yīng)用程序存儲(chǔ)遠(yuǎn)程會(huì)話狀態(tài)的服務(wù)器名,默認(rèn)為本機(jī)

Ill.sqlConnectionString:當(dāng)用會(huì)話狀態(tài)數(shù)據(jù)庫(kù)時(shí),在這里設(shè)置連接字符串

IV.Cookieless:設(shè)置為true時(shí),表示不使用cookie會(huì)話狀態(tài)來標(biāo)識(shí)客戶;否則,相反.

V.TimcOut:用來定義會(huì)話狀態(tài)存儲(chǔ)的時(shí)間,超過期限,將自動(dòng)烈止會(huì)話.

web.config配置文件(默認(rèn)的配置設(shè)置)以下所有的代碼都應(yīng)該位于

<configuration>

<system.web>

</system.web>

</configuration>

之間,出手學(xué)習(xí)的目的下面的示例都省略了這段XML標(biāo)記。

1、<authentication>節(jié)

作用:配置ASP.NET身份驗(yàn)證支持(為Windows、Forms.PassPort,None四種)。該元素只

能在計(jì)算機(jī)、站點(diǎn)或應(yīng)用程序級(jí)別聲明。vauthentication>元素必需與〈authorization〉節(jié)

配合使用。

示例:

以下示例為基于窗體(Forms)的身份驗(yàn)證配置站點(diǎn),當(dāng)沒有?登陸的用戶訪問需要身份驗(yàn)證的網(wǎng)頁(yè),網(wǎng)頁(yè)

自動(dòng)跳轉(zhuǎn)到登陸網(wǎng)頁(yè)。

<authenticationmode="Forms">

<formsloginUrl="logon.aspx"name=".FormsAuthCookie''/>

</authentication>

其中元素loginUrl表示登陸網(wǎng)頁(yè)的名稱,name表示Cookie名稱。

2,<authorization>節(jié)

作用:控制對(duì)URL資源的客戶端訪問(如允許匿名用戶訪問)。此元素可以在任何級(jí)別(計(jì)算機(jī)、

站點(diǎn)、應(yīng)用程序、子目錄或頁(yè))上聲明。必需與〈authentication〉節(jié)配合使用。

示例:以下示例禁止匿名用戶的訪問

<authorization>

<denyusers="?'/>

</authorization>

注:你可以使用user.identitymame米獲取已經(jīng)過驗(yàn)證的當(dāng)前的用戶名:可以使用web.Security.For

msAuthentication.RedirecFromLoginPage方法將已驗(yàn)證的用戶重定向到用戶剛才請(qǐng)求的頁(yè)面.具體

3、<compilation>節(jié)

作用:配置ASP.NET使用的所有編譯設(shè)置。默認(rèn)的debug屬性為''True".在程序編譯完成交付使用

之后應(yīng)將其設(shè)為False(Web.config文件中有詳細(xì)說明,此處省略示例)

4,<customErrors>

作用:為ASP.NET應(yīng)用程序提供有關(guān)自定義錯(cuò)誤信息的信息。它不適用于XMLWebservi

ces中發(fā)生的錯(cuò)誤。

示例:當(dāng)發(fā)生錯(cuò)誤時(shí),將網(wǎng)頁(yè)跳轉(zhuǎn)到自定義的錯(cuò)誤頁(yè)面。

<customErrorsdefaultRedirect="ErrorPage.aspx"mode="RemoteOnly">

</customErrors>

其中元素defaultRedirect表示自定義的錯(cuò)誤網(wǎng)頁(yè)的名稱。mode元素表示:對(duì)不在本地Web服務(wù)

器上運(yùn)行的用戶顯示自定義(友好的)信息。

5、<httpRuntime>節(jié)

作用:配置ASP.NETH-TP運(yùn)行庫(kù)設(shè)置。該節(jié)可以在計(jì)算機(jī)、站點(diǎn)、應(yīng)用程序和子目錄級(jí)別聲明。

示例:控制用戶上傳文件最大為4M,最長(zhǎng)時(shí)間為60秒,最多請(qǐng)求數(shù)為100

<httpRuntimemaxRequestLength="4096"executionTimeout="60"appRequestQ

ueueLimit="100"/>

Configurationsettings.AppSettings["scon"]

ASP.NET中使用web.config配置web應(yīng)用程

序中的數(shù)據(jù)庫(kù)連接

固你會(huì)經(jīng)常碰到這種情況:幾乎在網(wǎng)站的每個(gè)頁(yè)面上,存儲(chǔ)一些全局處理信息。理想的做法是將這些信息

一次性的集中存儲(chǔ)在資料檔案庫(kù)中,而不是在網(wǎng)站的每個(gè)頁(yè)面上都重梵這樣的操作。比如說數(shù)據(jù)庫(kù)連接串

就是這樣的信息,如果這些信息不是集中存儲(chǔ)在特定區(qū)域中,而是在網(wǎng)站的每個(gè)需要連接數(shù)據(jù)庫(kù)的頁(yè)面.上

手工輸入,可以設(shè)想:當(dāng)數(shù)據(jù)庫(kù)連接串改動(dòng)時(shí)將會(huì)令人頭痛,你必須遍歷網(wǎng)站中所有連接數(shù)據(jù)庫(kù)的頁(yè)面去

修改!

在ASP.NET中,通過Web.config,你可為使用<appSettings>標(biāo)記,在這個(gè)標(biāo)記中,你可用<ad

d.../>標(biāo)記定義0到多個(gè)設(shè)置.本文中我們主要討論了如何使用web.config來配置一個(gè)web應(yīng)用程

序中的數(shù)據(jù)庫(kù)連接。

web.config文件是標(biāo)準(zhǔn)的xml文件,我們可以使用它來為一臺(tái)機(jī)器下的每一個(gè)web應(yīng)用程序或某個(gè)應(yīng)

用程序或一個(gè)目錄下的頁(yè)面來進(jìn)行設(shè)置,當(dāng)然,它也可以為一個(gè)單獨(dú)的web頁(yè)面進(jìn)行設(shè)置。

如:網(wǎng)站的主目錄是\inetpub\wwwroot\,那么我們將web.config放置于其下,那么這個(gè)網(wǎng)站中的應(yīng)

用程序?qū)⒈粀eb.config中的設(shè)置所影響。

e.g.:

<?xmlversion="1.0"encoding="gb2312"?>

<configuration>

<system.web>

<compilationdefaultlanguage="vb"debug="true"/>

<customerrorsmode="remoteonly"defaultredirect="js/error.htm">

<errorstatuscode="404"redirect="js/filenotfound.aspx"/>

<errorstatuscode="500"redirect="js/error.htm"/>

</customerrors>

<authenticationmode="windows"/>

〈authorization〉

<allowusers="*"/>

</authorization>

<httpruntimemaxrequestlength="4000"usefu11yquaIifiedredirecturl="true"executionti

meout="45"/>

<traceenabled="false"requestlimit="10"pageoutput="false"tracemode="sortbytime"

localonly="true"/>

<sessionstatemode="inproc"stateconnectionstring="tcpip=:43444"cookieles

s="false"timeout="20"/>

<globalizationrequestencoding-"gb2312"responseencoding-"gb2312"fileencodinq-"g

b2312"/>

</system.web>

<appsettings>

oddkey="connstring"value="uid=flash;password=3.1415926;database=news;server

=(local)"/>

</appsettings>

</configuration>

這里我們討論一下如何在wcb.config中設(shè)置數(shù)據(jù)庫(kù)連接。

1、連接一個(gè)數(shù)據(jù)庫(kù):

在web.config中的〈configuration〉后加入

<appsettings>

<addkey="connstring"

value="uid=flash;password=3.1415926;database=news;server=(local)"/>

</appsettings>

在程序中,你可以使用以下代碼來使用web.config中的設(shè)置:

importssystem.configuration

dimmyvarasstring

myvar=configurationsettings.appsettings("connstring"

usingsystem.configuration;

stringmyvar;

myvar=configurationsettings.appsettings["connstring"];

2、連接多個(gè)數(shù)據(jù)庫(kù)

同理,那就是使用多個(gè)不同的key值來設(shè)置

3、設(shè)置不同子目錄下應(yīng)用程序的數(shù)據(jù)庫(kù)鏈接

這是一個(gè)很有意思的方法,在設(shè)置前,先說明一下它的用途:

如果在?個(gè)虛擬目錄下有多個(gè)子目錄,每?個(gè)子目錄下下的web應(yīng)用程序都需要連接不同的數(shù)據(jù)庫(kù),這

如何做呢??

一種方法是在每一個(gè)子目錄下分別建立一個(gè)web.config,用它來設(shè)置這個(gè)目錄下的數(shù)據(jù)庫(kù)連接。但這種

方法的問題是需要維護(hù)每一個(gè)了目錄下的web.config.

方法二,是只在虛擬目錄卜建立一個(gè)web.config,在它里面設(shè)置每一個(gè)子目錄卜的應(yīng)用程序的數(shù)據(jù)庫(kù)連

接。說到這里,你會(huì)想到上面的第二種方法,使用多個(gè)不同的key值來設(shè)置,這的確是一個(gè)辦法。

這里,我想說明的是另一種方法:在虛擬目錄下布置web.config,在其中使用location標(biāo)記,使用同一

個(gè)key值來連接數(shù)據(jù)庫(kù),這樣做的好處很明顯,因?yàn)橛猛粋€(gè)key值,將導(dǎo)致在所有目錄下的應(yīng)用程序

中,都可以使用共同的語句來連接數(shù)據(jù)庫(kù),這在程序以后發(fā)生位置遷移時(shí),并不用修改程序中連接數(shù)據(jù)庫(kù)

的語句。

具體設(shè)置如下:

<locationpath="news">

<appsettings>

<addkey="connstring"value="uid=flyangel;password=3.1415926;database=news;serv

er=(local)"/>

</appsettings>

</location>

<locationpath="bbs">

<appsettings>

oddkey="connstring"value="uid=flyangel;password=3.1415926;database=bbs;ssrve

r=(local)"/>

</appsettings>

</location>

<locationpath="soft">

<appsettings>

oddkey=,,connstring"value="uid=flyangel;password=3.1415926;database^soft;serve

r=(local)"/>

</appsettings>

</location>

注:上例中news、bbs、soft分別是虛擬目錄下的子目錄。

程序中使用連接時(shí),采用下而的方法:

publicfunctiongetconnectionstring()

configurationsettings.appsettings().item("connstring"

endsub

最后需要說明的一點(diǎn)是,為了有效地利用.config文件,你應(yīng)當(dāng)創(chuàng)建標(biāo)準(zhǔn)的鍵名和值定義供所有的應(yīng)用程

序開發(fā)人員所用。這樣就可以讓同?項(xiàng)目的開發(fā)人員采用公共的項(xiàng)目設(shè)置。這些標(biāo)準(zhǔn)在部署應(yīng)用程序和將

其轉(zhuǎn)化為產(chǎn)品的時(shí)候非常有用。

web.config中的session配置詳解

打開某個(gè)應(yīng)用程序的配置文件Web.config后,我們會(huì)發(fā)現(xiàn)以下這段:

<sessionstate

mode="InProc"

stateConnectionString="tcpip=:42424"

sqlConnectionString="datasource=;Trusted_Connection=yes"

cookieless="false"

timeout="20"

/>

這一段就是配置應(yīng)用程序是如何存儲(chǔ)Session信息的了。我們以下的各種操作主要是針對(duì)這一段配置

展開。讓我們先看看這一段配置中所包含的內(nèi)容的意思。sessionstate節(jié)點(diǎn)的語法岫這樣的:

<sessionstatemode="Off|InProc|StateServer|SQLServer"

cookieless="true|false"

timeout="numberofminutes"

stateConnectionString="tcpip=server:port"

sqlConnectionString="sqlconnectionstring"

stateNetworkTimeout="numberofseconds"

/>

必須有的屬性是

屬性選項(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ǔ)在SQLServer中。

可選的屬性是:

屬性選項(xiàng)描述

cookieless設(shè)置客戶端的session信息存儲(chǔ)到哪里.

ture使用Cookieless模式

false使用Cookie模式,這是默認(rèn)值。

timeout設(shè)置經(jīng)過多少分鐘后服務(wù)器自動(dòng)放棄Session信息。默認(rèn)為20分鐘

stateConnectionString設(shè)置將Session信息存儲(chǔ)在狀態(tài)服務(wù)中時(shí)使用的服務(wù)器名稱和端口號(hào),例如:

"tcpip=:42424"。當(dāng)mode的值是StateServerJt,這個(gè)屬性是必需的。

sqlConnectionString設(shè)置與SQLServer■連接時(shí)的連接字符串。例如"datasource=localhost;Inte

gratedSecurity=SSPI;InitialCatalog=northwind"o當(dāng)mode的值是SQLServer時(shí),這個(gè)屬性是

必需的。

stateNetworkTimeout設(shè)置當(dāng)使用StateServer■模式存儲(chǔ)Session狀態(tài)時(shí),經(jīng)過多少秒空閑后,斷開

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)站的SessionlD,而其他的Session信息則保存在服務(wù)器端。在

ASP中,客戶端的SessionlD實(shí)際是以Cookie的形式存儲(chǔ)的。如果用戶在瀏覽器的設(shè)置中選擇了禁用C

ookie,那末他也就無法享受Session的便利之處了,甚至造成不能訪問某些網(wǎng)站。為了解決以上問題,

在ASP.NET中客戶端的Session信息存儲(chǔ)方式分為:Cookie和Cookieless兩種。

ASP.NET中,默認(rèn)狀態(tài)下,在客戶端還是使用Cookie存儲(chǔ)Session信息的。如果我們想在客戶端

使用Cookieless的方式存儲(chǔ)Session信息的方法如卜.:

找到當(dāng)前Web應(yīng)用程序的根H錄,打開Web.Config文件,找到如下段落;

<sessionstate

mode="InProc"

stateConnectionString="tcpip=:42424"

sqlConnectionString="datasource=127.0.0.l;Trusted_Connection=yes"

cookieless="false"

timeout="20"

/>

這段話中的cookieless="false"改為:cookieless="true",這樣,客戶端的Session信息就不再

使用Cookie存儲(chǔ)而是將其通過URL存儲(chǔ)。關(guān)閉當(dāng)前的IE,打開?個(gè)新IE,重新訪問剛才的Web

應(yīng)用程序,就會(huì)看到類似下面的樣子:

其中,http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.aspx中黑

體標(biāo)出的就是客戶端的SessionID。注意,這段信息是由HS自動(dòng)加上的,不會(huì)影響以前正常的連接。

ASP.NET中服務(wù)器端Session狀態(tài)的存儲(chǔ)

準(zhǔn)備工.作

為了您能更好的體驗(yàn)到實(shí)驗(yàn)現(xiàn)象,您可以建立一個(gè)叫做SessionState.aspx的頁(yè)面,然后把以下這

些代碼添加到vbodyx/body〉中。

<scriptrunat="server">

SubSession_Add(senderAsObject,eAsEventArgs)

Session("MySession")=textl.Value

spanl.InnerHtml="Sessiondataupdated!<P>Yoursessioncontains:<fontcolor

=red>"&Session("MySession").ToString()&"</font>"

EndSub

SubCheckSession(sendsrAsObject,eAsEventArgs)

If(Session("MySession")IsNothing)Then

spanl.InnerHtml="NOTHING,SESSIONDATALOST!"

Else

spanl.InnerHtml="Yoursessioncontains:<fontcolor=red>"&

Session("MySesson").ToString()&"</font>"

EndIf

EndSub

</script>

<formrunat="server"id="Form2">

<inputid="textl"type="text"runat="server"name="textl">

<inputtype="submit"runat="server"OnServerClick="Session_Add"

value="AddtoSessionState"id="Submitl"name="Submitl">

<inputtype="submit"runat="server"OnServerClick="CheckSession"

value="ViewSessionState"id="Submit2"name="Submit2">

</form>

<hrsize="l">

<fontsize="6"><spanid="spanl"runat="server"/></font>

這個(gè)SessionState.aspx的頁(yè)面可以用來測(cè)試在當(dāng)前的服務(wù)器上是否丟失了Session信息。

將服務(wù)器Session信息存儲(chǔ)在進(jìn)程中

讓我們來回到Web.config文件的剛才那段段落中:

<sessionstate

mode="InProc"

stateConnectionString="tcpip=:42424"

sqlConnectionString="datasource=127.0.0.l;Trusted_Connection=yes"

cookieless="false"

timeout="20"

/>

當(dāng)mode的值是InProc時(shí),說明服務(wù)器正在使用這種模式,

這種方式和以前ASP中的模式?樣,就是服務(wù)器將Session信息存儲(chǔ)在IIS進(jìn)程中。當(dāng)HS關(guān)閉、

再起后,這些信息都會(huì)丟失。但是這種模式也有自己最大好處,就是性能最高。應(yīng)為所有的Session信息

都存儲(chǔ)在了HS的進(jìn)程中,所以HS能夠很快的訪問到這些信息,這種模式的性能比進(jìn)程外存儲(chǔ)Session

信息或是在SQLServer中存儲(chǔ)Session信息都要快上很多。這種模式也是ASP.NET的默認(rèn)方式.

好了,現(xiàn)在讓我們做個(gè)試驗(yàn)。打開剛才的SessionState.aspx頁(yè)面,隨便輸入一些字符,使其存儲(chǔ)

在Session中。然后,讓我們讓HS重起。注意,并不是使當(dāng)前的站點(diǎn)停止再開始,而是在IIS中本機(jī)的

機(jī)淵名的節(jié)點(diǎn)上點(diǎn)擊鼠標(biāo)右犍,選擇重新啟動(dòng)(想當(dāng)初使用NT4時(shí),重新啟動(dòng)HS必須要重新啟動(dòng)

計(jì)算機(jī)才行,微軟真是@#$%人&)返回到Sessionstate.aspx頁(yè)面中,檢查剛才的Session信息,發(fā)現(xiàn)

信息已經(jīng)丟失了。

將服務(wù)器Session信息存儲(chǔ)在進(jìn)程外

首先,讓我們來打開管理工具->服務(wù),找到名為:ASP.NETStateService的服務(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的值改為StateServero保存文件后的重新

打開一個(gè)1匕打開sessionstate.aspx頁(yè)面,保住一些信息到Session中。這時(shí),讓我們重起US,再

回到SessionState.aspx頁(yè)面中查看剛才的Session信息,發(fā)現(xiàn)沒有丟失。

實(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為的it算機(jī)的進(jìn)程中,就帝要設(shè)置.成這樣:stateconnectionstrlng="tcpip=192.16

8.0.2:42424"。當(dāng)然,不要忘記在的計(jì)算機(jī)中裝上.NETFramework,并且啟動(dòng)ASP.N

ETStateServices服務(wù)。

將服務(wù)器Session信息存儲(chǔ)在SQLServer中

首先,還是讓我們來做一些準(zhǔn)備工作。啟動(dòng)SQLServer和SQLServer代理服務(wù)。在SQLServer

中執(zhí)行一個(gè)叫做InstalISqIState.sql的腳本文件。這個(gè)腳本文件將在SQLServer中創(chuàng)建一個(gè)用來專門

存儲(chǔ)Session信息的數(shù)據(jù)電及一個(gè)維護(hù)Session信息數(shù)據(jù)庫(kù)的SQLServer代理作業(yè)。我們可以在以

下路徑中找到那個(gè)文件:

[systemdrive]\winnt\Microsoft.NET\Framework\[version]\

然后打開查詢分析器,連接到SQLServe「服務(wù)器,打開剛才的那個(gè)文件并且執(zhí)行。稍等片刻,數(shù)據(jù)

庫(kù)及作業(yè)就建立好了。這時(shí),你可以打開企業(yè)管理器,看到新增了一個(gè)叫ASPState的數(shù)據(jù)庫(kù)。但是這個(gè)

數(shù)據(jù)庫(kù)中只是些存儲(chǔ)過程,沒有用戶表。實(shí)際上Session信息是存儲(chǔ)在了tempdb數(shù)據(jù)庫(kù)的ASPSrateT

empSessions表中的,另外一個(gè)ASPStateTempApplications表存儲(chǔ)了ASP中Application對(duì)象信息。

這兩個(gè)表也是剛才的那個(gè)腳本建立的。另外查看管理->SQLServer代理。作業(yè),發(fā)現(xiàn)也多了一個(gè)叫做A

SPState_Job_DeleteExpiredSessions的作業(yè),這個(gè)作業(yè)實(shí)際上就是每分鐘去ASPStateTempSessi

ons表中刪除過期的Session信息的。

接著,我們返回到Web.config文件,修改mode的值改為SQLServer。注意,還要同時(shí)修改sql

Connectionstring的值,格式為:

sqlConncctionString-"datosource-localhost;IntegratedSccurity-SSPI;"

其中datasource是指SQLServed艮務(wù)器的IP地址,如果SQLServer與US是一臺(tái)機(jī)子,寫1

就行了。IntegratedSecurity=SSPI的意思是使用Windows集成身份驗(yàn)證,這樣,訪問數(shù)

據(jù)庫(kù)將以ASP.NET的身份進(jìn)行,通過如此配置,能夠獲得比使用userid=sa;password=口令的SQLS

erver驗(yàn)證方式更好的安全性。當(dāng)然,如果SQLServer運(yùn)行于另一臺(tái)計(jì)算機(jī)上,你可能會(huì)需要通過Acti

veDirectory域的方式來維護(hù)兩邊驗(yàn)證的一致性。

同樣,讓我們做個(gè)試驗(yàn)。句SessionState.aspx中添加Session信息,這時(shí)發(fā)現(xiàn)Session信息已經(jīng)

存在SQLServer中了,即使你重起計(jì)算機(jī),剛才的Session信息也不會(huì)丟失?,F(xiàn)在,你已經(jīng)完全看見了

Session信息到底是什么樣子的了,而且又是存儲(chǔ)在SQLServer中的,能干什么就看你的發(fā)揮了,哈哈。

總結(jié)

通過這篇文章,你可以看到在Session的管理和維護(hù)上,ASP.NET比ASP有了很大的進(jìn)步,我們可

以更加隨意的挑選適合的方法廣。對(duì)于企業(yè)級(jí)的應(yīng)用來說,這無疑對(duì)于服務(wù)器的同步、服務(wù)器的穩(wěn)定性、

可靠性都是有利的。相信在強(qiáng)大的微軟支持下,新一代的電子商務(wù)平臺(tái)耨會(huì)搭建的更好!

同時(shí).,大家也會(huì)發(fā)現(xiàn),在這個(gè)整個(gè)技術(shù)中包括了操作系統(tǒng)、Web服務(wù)及數(shù)據(jù)庫(kù)多種技術(shù)的整合。我相

信,也許Windows沒有Unix穩(wěn)定,HS沒有Apache穩(wěn)定,SQLServer也沒有Oracle強(qiáng)大,但是,

誰可以將他們?nèi)绱送昝赖穆?lián)動(dòng)到一起呢?所以說,雖然微軟每一方面都不是太強(qiáng),但是如果把微軟的東西

都整合到一起,誰敢說他不強(qiáng)大呢?微軟就是微軟!

javascript事件列表解說

javascript事件列表解說

事件瀏覽器支持解說

—onclickIE3、N2鼠標(biāo)點(diǎn)擊時(shí)觸發(fā)此事件

般ondblclickIE4、N4鼠標(biāo)雙擊時(shí)觸發(fā)此事件

onmousedownIE4、N4按下鼠標(biāo)時(shí)觸發(fā)此事件

onmouseupIE4、N4鼠標(biāo)按下后松開鼠標(biāo)時(shí)觸發(fā)此事件

onmouseoverIE3、N2當(dāng)鼠標(biāo)移動(dòng)到某對(duì)象范圍的上方時(shí)觸發(fā)此事件

onmousemoveIE4、N4鼠標(biāo)移動(dòng)時(shí)觸發(fā)此事件

onmouseoutIE4、N3當(dāng)鼠標(biāo)離開某對(duì)象范圍時(shí)觸發(fā)此事件

onkeypressIE4、N4當(dāng)鍵盤上的某個(gè)鍵被按下并且釋放時(shí)觸發(fā)此事件.

onkeydownIE4、N4當(dāng)鍵盤上某個(gè)按鍵被按下時(shí)觸發(fā)此事件

onkeyupIE4、N4當(dāng)鍵盤上某個(gè)按鍵被投放開時(shí)觸發(fā)此事件

onabortIE4、N3圖片在下載時(shí)被用戶中斷

onbeforeunloadIE4、N當(dāng)前頁(yè)面的內(nèi)容將要被改變時(shí)觸發(fā)此事件

onerrorIE4、N3出現(xiàn)錯(cuò)誤時(shí)觸發(fā)此事件

、頁(yè)面內(nèi)容完成時(shí)觸發(fā)此事件

面onloadIE3N2

相onmoveIE、N4瀏覽器的窗口被移動(dòng)時(shí)觸發(fā)此事件

onresizeIE4、N4當(dāng)瀏覽器的窗口大小被改變時(shí)觸發(fā)此事件

onscrollIE4、N瀏覽器的滾動(dòng)條位置發(fā)生變化時(shí)觸發(fā)此事件

瀏覽器的停止按鈕被按下時(shí)觸發(fā)此事件或者正在下載的文件被

onstopIE5、N

中斷

onunloadIE3、N2當(dāng)前頁(yè)面將被改變時(shí)觸發(fā)此事件

1

友onblurIE3、N2當(dāng)前元素失去焦點(diǎn)時(shí)觸發(fā)此事件

單.

onchangeIE3、N2當(dāng)前元素失去焦點(diǎn)并且元素的內(nèi)容發(fā)生改變而觸發(fā)此事件

onfocusIE3N2當(dāng)某個(gè)元素獲得焦點(diǎn)時(shí)觸發(fā)此事件

關(guān)

onresetIE4N3當(dāng)表單中RESET的屬性被激發(fā)時(shí)觸發(fā)此事件

Ji

件onsubmitIE3N2一個(gè)表單被遞交時(shí)觸發(fā)此事件

滾onbounceIE4、N在Marquee內(nèi)的內(nèi)容移動(dòng)至Marquee顯示范國(guó)之外時(shí)觸發(fā)此

事件

onfinishIE4、N當(dāng)Marquee元素完成需要顯示的內(nèi)容后觸發(fā)此事件

‘幕

onstartIE4、N

1;當(dāng)Marquee元素開始顯示內(nèi)容時(shí)觸發(fā)此事件

1

onbeforecopyIE5、N當(dāng)頁(yè)而當(dāng)前的被選擇內(nèi)容將要豆制到瀏覽者系統(tǒng)的剪貼板前觸

發(fā)此事件

onbeforecutIE5,N當(dāng)頁(yè)面中的一部分或者全部的內(nèi)容將被移離當(dāng)前頁(yè)面[剪貼]并

移動(dòng)到瀏覽者的系統(tǒng)剪貼板時(shí)觸發(fā)此事件

onbeforeeditfocusIE5、N當(dāng)前元素將要進(jìn)入編輯狀態(tài)

onbeforepasteIE5,N內(nèi)容將要從瀏覽者的系統(tǒng)剪貼板傳送[粘貼]到頁(yè)面中時(shí)觸發(fā)此

事件

onbeforeupdateIE5、N當(dāng)瀏覽者粘貼系統(tǒng)剪貼板中的內(nèi)容時(shí)通知目標(biāo)對(duì)象

oncontextmenuIE5、N當(dāng)瀏覽者按下鼠標(biāo)右鍵出現(xiàn)菜單時(shí)或者通過鍵盤的按鍵斛發(fā)頁(yè)

面菜單時(shí)觸發(fā)的事件

oncopyIE5、N當(dāng)頁(yè)面當(dāng)前的被選擇內(nèi)容被復(fù)制后觸發(fā)此事件

件oncutIE5、N當(dāng)頁(yè)面當(dāng)前的被選擇內(nèi)容被剪切時(shí)觸發(fā)此事件

ondragIE5、N當(dāng)某個(gè)對(duì)象被拖動(dòng)時(shí)觸發(fā)此事件[活動(dòng)事件]

ondragdropIE、N4?個(gè)外部對(duì)象被鼠標(biāo)拖進(jìn)當(dāng)前窗口或者幀

ondragendIE5,N當(dāng)鼠標(biāo)拖動(dòng)結(jié)束時(shí)觸發(fā)此事件,即鼠標(biāo)的按鈕被釋放了

ondragenterIE5、N當(dāng)對(duì)象被鼠標(biāo)拖動(dòng)的對(duì)象進(jìn)入其容器范圍內(nèi)時(shí)觸發(fā)此事件

ondragleaveIE5、N當(dāng)對(duì)象被鼠標(biāo)拖動(dòng)的對(duì)象離開其容器范圍內(nèi)時(shí)觸發(fā)此事件

ondragoverIE5、N當(dāng)某被拖動(dòng)的對(duì)象在另?對(duì)象容器范闈內(nèi)拖動(dòng)時(shí)觸發(fā)此事件

ondragstartIE4、N當(dāng)某對(duì)象將被拖動(dòng)時(shí)觸發(fā)此事件

ondropIE5、N在一個(gè)拖動(dòng)過程中,釋放鼠標(biāo)鍵時(shí)觸發(fā)此事件

onlosecaptureIE5、N當(dāng)元素失去鼠標(biāo)移動(dòng)所形成的選擇焦點(diǎn)時(shí)觸發(fā)此事件

onpasteIE5、N當(dāng)內(nèi)容被粘貼時(shí)觸發(fā)此事件

onselectIE4、N當(dāng)文本內(nèi)容被選擇時(shí)的事件

onselectstartIE4、N當(dāng)文本內(nèi)容選擇將開妗發(fā)生時(shí)觸發(fā)的事件

onafterupdateIE4、N當(dāng)數(shù)據(jù)完成由數(shù)據(jù)源到對(duì)象的傳送時(shí)觸發(fā)此事件

oncellchangeIE5、N當(dāng)數(shù)據(jù)來源發(fā)生變化時(shí)

ondataavailableIE4、N當(dāng)數(shù)據(jù)接收完成時(shí)觸發(fā)事件

ondatasetchangedIE4、N數(shù)據(jù)在數(shù)據(jù)源發(fā)生變化時(shí)觸發(fā)的事件

數(shù)

ondatasetcompleteIE4、N當(dāng)來子數(shù)據(jù)源的全部有效數(shù)據(jù)讀取完畢時(shí)觸發(fā)此事件

,據(jù)

onerrorupdateIE4、N當(dāng)使用onBeforeUpdate事件觸發(fā)取消了數(shù)據(jù)傳送時(shí).,代替o

nAfterUpdate事件

onrowenterIE5、N當(dāng)前數(shù)據(jù)源的數(shù)據(jù)發(fā)生變化并且有新的有效數(shù)據(jù)時(shí)觸發(fā)的事件

onrowexitIE5sN當(dāng)前數(shù)據(jù)源的數(shù)據(jù)將耍發(fā)生變化時(shí)觸發(fā)的事件

onrowsdeleteIE5、N當(dāng)前數(shù)據(jù)記錄將被刪除時(shí)觸發(fā)此事件

onrowsinsertedIE5sN當(dāng)前數(shù)據(jù)源將要插入新數(shù)據(jù)記錄時(shí)觸發(fā)此事件

onafterprintIE5、N當(dāng)文檔被打印后觸發(fā)此事件

onbeforeprintIE5、N當(dāng)文檔即將打印時(shí)觸發(fā)此事件

onfilterchangeIE4、N當(dāng)某個(gè)對(duì)象的濾鏡效果發(fā)生變化時(shí)觸發(fā)的事件

onhelpIE4、N當(dāng)瀏覽者按下F1或者瀏覽器的幫助選擇時(shí)觸發(fā)此事件

■11

當(dāng)對(duì)象的屬性之一發(fā)生變化時(shí)觸發(fā)此事件

件onpropertychangeIE5,N

onreadystatechangIE4、N

當(dāng)對(duì)象的初始化屬性值發(fā)生變化時(shí)觸發(fā)此事件

e

附錄資料:

Ehcache緩存配置

簡(jiǎn)介

Cache的配置很靈活,官方提供的Cache配置方式有好幾種。你可以

通過聲明配置、在xml中配置、在程序里配置或者調(diào)用構(gòu)造方法時(shí)傳

入不同的參數(shù)。

你可以將Cache的配置從代碼中剝離出來,也可以在使用運(yùn)行時(shí)配

置,所謂的運(yùn)行時(shí)配置無非也就是在代碼中配置。以下是運(yùn)行時(shí)配置

的好處:

?在同一個(gè)地方配置所有的Cache,這樣很容易管理Cache的

內(nèi)存和磁盤消耗。

?發(fā)布時(shí)可更改Cache配置。

?可再安裝階段就檢查出配置錯(cuò)誤信息,而避免了運(yùn)行時(shí)錯(cuò)誤。

本文將會(huì)對(duì)ehcache.xml配置文件進(jìn)行詳細(xì)的闡述。在配置的時(shí)可以

拷貝一個(gè)現(xiàn)有的ehcache.xml,如果沒有請(qǐng)點(diǎn)擊這里去下載。

ehcache-failsafe.xml

如果你調(diào)用了CacheManager默認(rèn)構(gòu)造方法去創(chuàng)建CacheManager的實(shí)

例,此方法會(huì)到classpath中找ehcache.xml文件,否則它會(huì)到類路

徑下找ehcache-failsafe.xml文件。而ehcache-failsafe.xml被包

含在jar包中,所有它肯定能找的到。

ehcache-failsafe.xml提供了一個(gè)非常簡(jiǎn)單的默認(rèn)配置,這樣可以

使用戶在沒有創(chuàng)建ehcache.xml的情況下使用Ehcache。

不過這樣做Ehcache會(huì)提醒用戶創(chuàng)建一個(gè)正確的Ehcache配置。

ehcache.xml片'段:

<ehcache>

<diskStorepath二〃java.io.tmpdir〃/>

<defaultCache

maxElementsInMemory=〃10000〃

eternal二〃false”

tinieToTdleSeconds=,/120,/

timeToLiveSeconds=/,l20〃

overflowToDisk=/,truez,

maxElementsOnDisk=”10000000〃

diskPersistem二〃false”

diskExpiryThreadIntervalSeconds=,/120

memoryStoreEvictionPolicy=,,LRU,z

/>

</ehcache>

ehcache.xml和其他配置文件

在Ehcache-1.6之前的版本,只支持ASCII編碼的ehcache.xml配置

文件。在Ehcach-1.6之后版本中,支持UTF8編碼的ehcache.xml配

置文件。因?yàn)橄蚝蠹嫒?,所有采用ASCII編碼的配置文件完全沒有必

要轉(zhuǎn)換為UTF8。

一個(gè)CacheManager必須要有一個(gè)XML配置。由于磁盤路徑或是監(jiān)聽

端口,多個(gè)CacheManager使用同一個(gè)配置文件時(shí)會(huì)出現(xiàn)錯(cuò)誤。

下面是ehcache.xml具體實(shí)例以及配置指南

<ehcache

xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

?CacheManager配置

Dmu11icastGroupPort=4446,這樣可以配置監(jiān)聽端口。

?DiskStore配置

如果你使用的DiskStore(磁盤緩存),你必須要配置DiskStore配

置項(xiàng)。如果不配置,Ehcache將會(huì)使用java.io.tmpdiro

diskStroe的“pata”屬性是用來配置磁盤緩存使用的物理路徑的,

Ehcache磁盤緩存使用的文件后綴名是.data和.index。

<disStorepalh="java.io.tmpdir”/>

?CacheManagerEventListener酉己置

我們通過CacheManagerEventListenerFactory可以實(shí)例化一個(gè)

CacheManagerPeerProvider,當(dāng)我們從CacheManager中added和

removedCache時(shí)、將通知CacheManagerPeerProvider,這樣一來,

我們就可以很方面的對(duì)CacheManager中的Cache做一些統(tǒng)計(jì)。

注冊(cè)到CacheManager的事件監(jiān)聽類名有:addingaCache和

removingaCache

<cacheManagerEventListenerFacotoryclass二"“

properties="”/>

?CacheManagerPeerProvider酉己置

在集群中CacheManager配置CacheManagerPeerProviderFactory創(chuàng)

建CacheManagerPeerProvidero具體的實(shí)例如下:

<cacheManagerPeerProviderFactoryclass=,,net.sf.ehcache.distr

ibution.

RMTCacheManagerPeerProviderFactory,z

properties=z/peerDiscovery=manual,

rmiUrls=//server1:40000/sampleCachel//server2:40000/seimple

Cache1

//serveri:40000/sampleCache21//server2:40000/sampleCache2,,

propertySeparator=〃,〃/>

?CacheManagerPeerListener配置

CacheManagerPeerListener配置是用來監(jiān)聽集群中緩存消息的分發(fā)

的。

<cacheManagerPeerListenerFactory

class=〃net?sf.ehcache.distribution.RMICacheManagerPe

erListenerFactory,/

properties=/zhostName=fully_qualifieci_hostname_or_ip,

port=40001,

socketTimeoutMiHis=120000"

propertySeparator="/>

?Cache配置

?name:Cache的唯一標(biāo)識(shí)

?maxE1ementsInMemory:內(nèi)存中最大緩存對(duì)

象數(shù)。

?maxElementsOnDisk:磁盤中最大緩存對(duì)象

數(shù),若是0表示無窮大。

?eternal:Element是否永久有效,一但設(shè)

置了,timeout將不起作用。

?overflowToDisk:配置此屬性,當(dāng)內(nèi)存中

Element數(shù)量達(dá)到maxElementsInMemory時(shí),Ehcache將會(huì)Element

寫到磁盤中。

?timoToTdleSeconds:設(shè)置Element在失效

前的允許閑置時(shí)間。僅當(dāng)element不是永久有效時(shí)使用,可選屬性,

默認(rèn)值是0,也就是可閑置時(shí)間無窮大。

timeToLiveSeconds:設(shè)置Element在失效

前允許存活時(shí)間。最大時(shí)間介于創(chuàng)建時(shí)間和失效時(shí)間之間。僅當(dāng)

element不是永久有效時(shí)使用,默認(rèn)是0.,也就是element存活時(shí)間

無窮大。

?diskPersistent:是否緩存虛擬機(jī)重啟期

數(shù)據(jù)。(這個(gè)虛擬機(jī)是指什么虛擬機(jī)一直沒看明白是什么,有高人還

希望能指點(diǎn)一二)。

?diskExpiryThreadlntervalSeconds:磁盤

失效線程運(yùn)行時(shí)間間隔,默認(rèn)是120秒。

?diskSpoolBufferSizeMB:這個(gè)參數(shù)設(shè)置

DiskStore(磁盤緩存)的緩存區(qū)大小。默認(rèn)是30MB。每個(gè)Cache都

應(yīng)該有自己的一個(gè)緩沖區(qū)。

?memoryStoreEvictionPo1icy:當(dāng)達(dá)至U

maxElementsInMemory限制時(shí),Ehcache將會(huì)根據(jù)指定的策略去清理

內(nèi)存。默認(rèn)策略是LRU(最近最少使用)。你可以設(shè)置為FIFO(先進(jìn)

先出)或是LFU(較少使用)。這里比較遺憾,Ehcache并沒有提供

一個(gè)用戶定制策略的接口,僅僅支持三種指定策略,感覺做的不夠理

想。

?CacheExceptionHandlingRfi

<cacheExceptionIIcndlerFactory

class=〃com.example.ExampleExceptionHandlerFactory/z

proper

ties二〃logLevel=FINE〃/>

總結(jié)

這里只對(duì)通用緩存的配置做了詳細(xì)的闡述:至于RMI緩存和集群緩存

可以參考這里。

下面給出幾個(gè)配置示例:

?Ehcache默認(rèn)Cache配置

<defaultCache

m£xElementsInMemory=z,10000z,

eternal=〃false”

timeToIdleSeconds=/,120//

timeToLiveSeconds=,,120//

overflowToDisk二〃true”

diskSpoo1BufferSizeMB=z/30

niaxElementsOnDisk=〃10000000〃

diskPorsistent二〃false”

diskExpiryThreadTntervalSeconds="120〃

memoryStoreEvictionPolicy二〃LRU〃

/>

Samp1eCache1配置

簡(jiǎn)單配置,在ehcache.xml文件中有此配置,在使用Ehcache前最好

將其刪除掉,自己配置。

緩存名sampleCachel,內(nèi)存中最多可緩存10000個(gè)Element,其中的

element會(huì)在閑置5分鐘或是存活10分鐘之后失效。

超過lOOOOelement時(shí),element將會(huì)輸出到磁盤中,輸出路徑是

java.io.tmpdir。

<cachename二〃sampleCachel”

maxElementsInMemory=",10000/,

maxElements0nDisk=zz1000/,

eternal二〃false”

overf1owToDisk=//1rue〃

diskSpoolBufferSizeMB=,,20,z

timeToIdleSeconds=/,300//

timeToLiveSeconds=〃600〃

memoryStoreEvictionPo1icy二〃LFU〃

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論