<html>
<head>
<title>Session IuWFNg</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div id="">
<table cellpadding="0" cellspacing="0" border="0" width="100%" class="main">
<tr>
<td valign="top" class="NAME">Session IuWFNg</td>
<td valign="top" class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td valign="top" colspan="2" class="description">







<p><!--<primary>Session object</primary>-->
<!--<primary>user
sessions</primary>-->Sȋ@\ Web AvP[V쐬邽߂̍ł傫ȉۑ 1 ́AT[o[̗vɖ񃆁[U[ɂĊmF邱ƂȂA[U[TCgړɁA[U[ŗL̏ǐՂł悤ɂ邱ƂłBێKv鑼̏ɂ́A[U[̎ʏAYꍇ̓[U[̃ZLeBAт荂xȃAvP[Vł́A[U[sIɉ Web TCg̊OςJX^}CYł悤ɂ郆[U[ݒ肪܂B[U[ŗL̏ێł̎vȖɂ́AݕWƂȂĂ HTTP 1.0 vgR̐܂B</p>




<p>HTTP 1.0 ɂ́A[U[̎ʏƃ[U[ŗL̃f[^ێł悤ɂAiIȐڑ̃JjYpӂĂ܂A̗Lpɂ͐܂BHTTP 1.0 ł́AZpIȏڍׂKvƂ邱ƂȂANCAguEU Keep-Alive bZ[WvLVT[o[ɑMł܂B{IɁÃbZ[ẂAṽNCAgƃI[vȐڑێ悤ɃvLVT[o[ɓ`܂BA̐ڑv́ȀꍇvLVT[o[ɂĔF܂BvLVT[o[ł̖̂́AvLVT[o[Ɨvꂽ Web T[o[Ԃ̐ڑnOƂɂȂ܂BȒPɐƁAWeb T[o[Ƃ̐ڑێƃG[ɂȂ₷ANCAguEUɂĂ܂łɍłʓIɎgpĂvgRłAHTTP 1.0 gpڑ̈ێ͐MɌ܂B</p>




<p>Microsoft Internet Information Server (ё Web T[o[) ɂ邱̖̃\[V́AHTTP Persistent Client State MechanismA܂
<!--<primary>cookies</primary>-->Cookie gpă[U[ʂƂ@łBIIS ́Agݍ݌^ Session IuWFNggpẴJjY܂B</p>




<p>Session IuWFNg݂͌̃[U[
<!--<primary>web servers</primary><secondary>sessions
on</secondary><see>user sessions</see>-->Web T[o[ł̃ZbV\܂B̓[U[ŗLłÃvpeBƃ\bhɂÃ[U[̐ڑ́Ã[U[ɌŗL̏T[o[őł܂B̒́AWeb AvP[VŃNCAgy[WŏɗvƂA[U[ Web T[o[ɍŌ̗vsĂ 20 ܂łƒ`܂B20 ́AύXł鏉ݒlłB{͂ŌquTimeoutv̍QƂĂB</p>




<p>[U[ZbV͎ 3 ̕@ 1 ŊJn܂B<!--<primary>initiating user
sessions</primary>--></p>




<ul><dd><p>ɃT[o[ɐڑĂȂ[U[ASession_OnStart Cxg̃R[h <filename>GLOBAL.ASA</filename> t@C܂܂ꂽAvP[Vɂ Active Server Pages v</p></dd><dd><p>[U[ACӂ̃ZbVXR[vϐɏۑXNvg Active Server Pages v</p></dd><dd><p><filename>GLOBAL.ASA</filename> t@CA<span class="LITERAL">SCOPE</span> p[^ Session ɐݒ肵 <span class="LITERAL">&lt;OBJECT&gt;</span> ^OgpIuWFNgAvP[V Active Server Pages v</p></dd></ul>
<p>[U[ZbV
Web TCg̎w肵<!--<primary>applications</primary><secondary>user sessions
and</secondary>-->AvP[VɌŗLłB̃AvP[Vw肷鉼zfBNg̉ɂ鉼zfBNg 1 ̃AvP[Vꍇ́Axɕ̃AvP[Vɑ΂ăZbVێ邱Ƃł܂B</p>




<p>Web T[o[́AŗL
<!--<primary>SessionID property
(Session)</primary>--> <!--<primary>user
sessions</primary><secondary>session
identifiers</secondary>-->
<!--<primary>cookies</primary><secondary>session
identifiers</secondary>-->SessionID lgpĊe[U[ʂ܂B SessionID ϐ́AWeb T[o[ł̃[U[ZbV̊JnɊe[U[Ɋ蓖ĂAWeb T[o[̃ɕۑ܂BZbV ID ́ASessionID ܂ Cookie [U[̃Rs[^ɏނƂŁANCAgɕۑ܂B Cookie ́A[U[vsтɃT[o[ɑM܂B[U[ʂ邽߁AT[o[ Cookie 擾AɕێĂ SessionID ƈv܂B</p>




<p>SessionID ϐɉāAʂ̃[U[ɌŗL̑̏ۑł܂BCӂ <!--<primary>session-level
scope</primary><secondary>user-specific
information</secondary>--> <!--<primary>users,
information on</primary>-->
<!--<primary>scope</primary><secondary>user-specific
information</secondary>-->ZbVxϐ Active Server Pages XNvĝǂł܂͕ύXł܂BZbVxϐ̒lɏ悤ɂɂ́A<filename>GLOBAL.ASA</filename> t@C Session_OnStart CxgvV[WŃR[hXNvgł܂B̃CxgvV[ẂA[U[̃ZbVJnƂɔ܂B<filename>GLOBAL.ASA</filename> t@C (<link linkend="ch11-1-fm2xml"> 11 </link>Q) ́Ae ASP AvP[VŗL̃R[hLqłt@CłB̃t@C̃R[h́A[U[ZbVJnƂɏ܂B</p>




<p>ɐ悤ɁASession IuWFNǵAʂ̃[U[Ɋւێ_ɂĔɏdvłBSession IuWFNggpƁAWeb TCgvApȊÕNCAgɌŗL̓ȖɑΉ邱Ƃł܂B</p>




<!--
<p class="TITLE">Session Object Summary</p>




<dl>
<dt>Properties</dt>
<dd><p>CodePage</p>






<p>LCID</p>




<p>SessionID</p>




<p>Timeout</p>
</dd>





<dt>Collections</dt>
<dd><p>Contents</p>






<p>StaticObjects</p>
</dd>




<dt>Methods</dt>
<dd><p>Abandon</p>






<p>Contents.Remove</p>




<p>Contents.RemoveAll</p>
</dd>




<dt>Events</dt>
<dd><p>Session_OnEnd</p>






<p>Session_OnStart</p>
</dd>
</dl>

-->
</td></tr>
</table>
</div>
<div id="CommentsTroubleshooting">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
RgуguV[eBO</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2">&nbsp;</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">




<p><!--<primary>comments and
troubleshooting</primary><secondary>Session
object</secondary>--> <!--<primary>session-level
scope</primary>--> <!--<primary>scope</primary><secondary>session-level</secondary>-->Session IuWFNggpƂɒӂKvłdvȂ̂ 1 ́ÃXR[vłBZbVxXR[vŕۑ́AAvP[Ṽ[U[ZbV̎Ԓ̓XR[vɂ܂B͏dvȃ|CgłBƂ΁AR[hŁAWeb TCg Search AvP[ṼReLXgɒ`ꂽZbVxϐƂ܂B̃AvP[V̉zfBNg <filename>/search</filename> ́A̕fBNg𔽉fĂ܂B</p>




<span class="PROGRAMLISTING"><pre>D:\www\apps\search</pre></span>




<p>݂̃XNvg <filename>SearchStart.ASP</filename> ́ÃfBNgɂ܂BZbVxϐ <var class="replaceable">strSearchPref</var> ̃XNvgŏƂ܂BɁAzfBNg <filename>/contrib</filename> ̕fBNg\ÃAvP[Vɂʂ̃AvP[VXNvg<filename>ContribMain.ASP</filename> Ƀ[U[ړ܂B</p>




<span class="PROGRAMLISTING"><pre>D:\www\apps\contrib</pre></span>




<p>̃[U[ASearch AvP[V܂܂ꂽzfBNg̃XNvg 20 ȓ (܂͐ݒ肳ĂCӂ̃ZbV) ɖ߂ƁA<var class="replaceable">strSearchPref</var> ZbVxϐlZbg܂B͕G Web AvP[Vł͏dȃG[̔ƂȂ܂B <!--<primary>expiring</primary><secondary>user
session-level variables</secondary>-->
<!--<primary>variables</primary><secondary>user-specific,
expiring</secondary>-->[U[ZbṼZbVxϐ́AAvP[V痣ĂԂ Web TCg̃AvP[VɎgpꂽꍇłAZbVIɗL؂܂B</p>




<p>̖ 1 ̕@́AAvP[VlXg邱ƂłBƂ΁ÃpX̂悤ɁA<filename>/contrib</filename> zfBNgfBNg̉ɔzu܂B</p>




<span class="PROGRAMLISTING"><pre>D:\www\apps\search\contrib</pre></span>




<p>̐ݒgpƁAContribution AvP[V̉zpX <filename>/contrib</filename> ́ASearch AvP[ṼReLXgɎc܂B</p>




<p>[U[ZbVI܂ł̃ftHgԂύXłƐ܂A̕ύX͂ȂKvȂ̂ł傤Bɂ 2 ̉\ȗR܂Bŏ́A[U[̃ZbV 20 ȏۑꍇłBƂ΁A[U[TCg 20 ȏ㗣ꂽɖ߂邱Ƃ킩Ăꍇ܂B2 Ԗڂ̉\́A[U[̃ZbV葁IꍇłBƂ΁A[U[̓TCgɒԐڑȂƂ킩Ă̂ŁÃZbVۑɂT[o[̃ւ̉eŏɂꍇ܂B̏ݒƂ͈قȂ悤ɐݒ肷@ɂẮA{͂ŌquTimeoutv̍QƂĂB</p>




<p>ׂ̂ẴZbVx̕ۑ́ANCAgɑMAɃT[o[ɖ߂ Cookie ̎gpɊÂĂ܂B[U[ Cookie 𖳌ɂĂ邩ACookie ̎gpT|[gĂȂÂuEUgpĂꍇ͂ǂł傤BWindows NT F؂܂͊{F؂gpĂꍇA
<!--<primary>LOGON_USER element
(Request)</primary>--> <!--<primary>users,
information on</primary>-->Request IuWFNg ServerVariables RNV LOGON_USER vf烆[U[ʂł܂B̏񂩂́AT[o[̃f[^x[X܂̓eLXgt@CA[U[ŗL̃f[^擾ł܂BWindows NT F؂܂͊{F؂gpĂȂꍇ́A[U[ʂł\͒ႭȂ܂Bߋɂ́A[U[ IP AhXʎqƂĎgpł܂ADHCP уt@CAEH[gpIɐ IP AhX̏ꍇA[U[ʂ邽߂ IP AhX͖ɗȂƍlKv܂B  </p>
</td>
</tr>
</table>
</div>
<div id="CodePage">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
CodePage</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="LITERAL">Session.CodePage</span> <span class="LITERAL">(=</span> <var class="replaceable">intCodePageValue</var><command role="literal">)</command>
</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p><!--<primary>Session
object</primary><secondary>properties
reference</secondary>--> <!--<primary>CodePage property
(Session)</primary>-->Web T[o[
<!--<primary>dynamic content</primary><secondary>code page
for</secondary>--> <!--<primary>content,
dynamic</primary><secondary>code page for</secondary>-->
<!--<primary>character sets</primary><secondary>code page for
dynamic content</secondary>-->݂̃XNvg̓IRec\邽߂ɎgpR[hy[Ww܂͎擾܂BR[hy[ẂÃP[Ŏgp邷ׂẲpыǋL܂ޕZbgłB</p>



</td>
</tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td></tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE">p[^</td>
</tr>
<tr>
<td colspan="2" class="description">




<dl>
<dt><var class="replaceable">intCodePageValue</var></dt>
<dd><p>T[o[ɃCXg[ꂽ̕ZbgɑΉ镄ȂłBCodePage vpeBݒ肷ƁA̕ZbggpRec\܂B̕\ɁÃp[^Ŏgp\ȗLȒl̈ꕔ݂̂܂B</p></dd>

</dl>




<table border="1">



<thead>
<tr valign="top">
<td>
<p><em>CodePage ̒l</em></p></td>
<td>
<p></p></td>
</tr>



</thead>



<tbody>
<tr valign="top">
<td>
<p>932</p></td>
<td>
<p>{̊</p></td>
</tr>



<tr valign="top">
<td>
<p>950</p></td>
<td>
<p></p></td>
</tr>



<tr valign="top">
<td>
<p>1252</p></td>
<td>
<p>čp (тقƂǂ̉B)</p></td>
</tr>



</tbody>

</table>

</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<span class="PROGRAMLISTING"><pre>&lt;%

' In the following code, assume that the original code 
' page setting is 1252 for American English. The 
' example demonstrates the use of the CodePage property 
' of the Session object to temporarily set the character
' set to Chinese so the text sent to the browser uses the
' Chinese character set:
Dim uintOrigCodePage
Dim uintChineseCodePage

uintChineseCodePage = 950
uintOrigCodePage = Session.CodePage

Session.CodePage = uintChineseCodePage
%&gt;
' +-----------------------------------------------------------+
' | This text is sent to the client browser using the         |
' | Chinese character set.                                    |
' +-----------------------------------------------------------+
&lt;%

' Remember to reset your CodePage property if you don't want 
' the rest of of the text created and placed into the HTML 
' stream to be displayed using the new character set.
Session.CodePage = uintOrigCodePage

%&gt;</pre></span>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>ftHgł́AActive Server Pages  <span class="LITERAL">CODEPAGE</span><!--<primary>CODEPAGE
directive</primary>--> fBNeBugpăXNvgy[Wɐݒ肷Aǂ̂悤ȕZbgłgp܂B<link linkend="ch11-1-fm2xml"> 11 </link>QƂĂBCodePage vpeBݒ肷ƁAuEUɑMꂽeLXĝ݂ɑ΂āA̐ݒ肪㏑܂BXNvg̃eLXǵA<span class="LITERAL">CODEPAGE</span> fBNeBugpĐ錾ꂽ̂ƓZbggpāAASP ƃXNvgԁA܂̓XNvg ActiveX R|[lcԂŒʐM܂B </p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
<div id="LCID">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
LCID</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="LITERAL">Session.LCID (=</span> <var class="replaceable">intLCID</var><command role="literal">)</command>
</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p><!--<primary>LCID
property (Session)</primary>--> <!--<primary>locale</primary>-->
<!--<primary>web
pages</primary><secondary>locale-specific
formatting</secondary>--> <!--<primary>dynamic
content</primary><secondary>locale for</secondary>-->
<!--<primary>content,
dynamic</primary><secondary>locale for</secondary>-->P[́ȀtH[}bg郆[U[ݒ\܂BƂ΁Aꕔ̃P[ł́Au//Nv`œttH[}bg܂B͕č̕WP[łBeP[́ÃP[ɌŗL LCID ܂̓P[ ID Ŏʂ܂B̃R[h́AIy[eBOVXeŒ`܂B</p>




<p>XNvg̃Rec̃P[ʎqݒ肷ɂ́ASession IuWFNg LCID vpeBgp܂BLCID vpeB́AIȃRec Web uEUɕ\邽߂ɎgpALȃP[ʎq\܂B</p>



</td>
</tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td></tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE">p[^</td>
</tr>
<tr>
<td colspan="2" class="description">




<dl>
<dt><var class="replaceable">intLCID</var></dt>
<dd><p>L 32 rbgP[ʎqB</p></dd>

</dl>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<span class="PROGRAMLISTING"><pre>&lt;%

' The following code demonstrates the use of the LCID property 
' to temporarily set the locale identifier to Standard French.

Dim intOrigLCID
Dim intFrenchLCID

intFrenchLCID = 1036
intOrigLCID = Session.LCID

Session.LCID = intFrenchLCID
%&gt;
' +-----------------------------------------------------------+
' | This text sent to the client browser will be formatted    |
' | according to the rules set by the locale identifier for   |
' | Standard French. For example, dates would be formatted    |
' | using the Day/Month/Year format, instead of the U.S.      |
' | standard Month/Day/Year.                                  |
' +-----------------------------------------------------------+
&lt;%

' The next line resets the LCID property:
Session.LCID = intOrigLCID

%&gt;</pre></span>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>LCID vpeB͍\ CodePage vpeBƎĂAƓt̃tH[}bg[ݒł܂B܂AAt@xbgɂ邽߂̃[ݒ肵܂B</p>




<p>ASP  <span class="LITERAL">LCID</span> fBNeBugpꍇAXNvg̊̃P[ʎqT[o[Őݒ肷邱ƂɂȂ܂BSession.LCID vpeB̓ftHgł̒lgp܂Bʂ̃tH[}bg[gpĕ܂͓NCAgɑMꍇ́ASession IuWFNg LCID vpeBݒ肷Kv܂BȀꍇAXNvgɑ΂ēIɕ񂨂ѓ̒ltH[}bg@ɂ͉e͂܂B



</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
<div id="SessionID">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
SessionID</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="LITERAL">Session.SessionID</span> 
</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p><!--<primary>SessionID property
(Session)</primary>--> <!--<primary>user
sessions</primary><secondary>session
identifiers</secondary>-->݂̊e[U[ZbVʂɎʂǂݎp̒lB̒l Long ^ŁANCAgRs[^
<!--<primary>cookies</primary><secondary>session
identifiers</secondary>-->Cookie Ƃĕۑ܂B[U[ZbVɁA[U[̃uEU͂ Cookie [U[ʂ@Ƃ Web uEUɑM܂B</p>



</td>
</tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td></tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE">p[^</td>
</tr>
<tr>
<td colspan="2" class="description">




<p>Ȃ</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<span class="PROGRAMLISTING"><pre>&lt;%

' The following code retrieves the current SessionID for
' a given user:

Dim lngUserSessionId

lngUserSessionId = Session.SessionID

%&gt;</pre></span>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>SessionID vpeB́A[U[ Web T[o[y[WŏɗvƂɐ܂BWeb T[o[́AGȃASYgp SessionID vpeB̒l쐬A̒l[U[̃Rs[^ Cookie Ƃĕۑ܂B̌A[U[ Web T[o[y[Wv邽тɁA Cookie  HTTP vwb_ŃT[o[ɑM܂BɁAT[o[ SessionID ɏ]ă[U[ʂł܂BCookie ́ANCAguEUċN邩AWebmaster  Web T[o[ċNƂ̂݁Aď܂B</p>




<p>SessionID Cookie ̓NCAguEUŕێA2 ̂ꂩ̃Rs[^ (NCAg܂ Web T[o[) ċN܂ŁAWeb T[o[ɑMAF܂B̎Ԃ́ASession IuWFNg Timeout vpeBƂ͖֌WłBƂ΁A[U[̃ZbVI邩ASession IuWFNg Abandon \bhgpĒ~ꂽƂ܂BɁA[U[̓uEUċN邱ƂȂTCgĖK₵܂BŌ̃ZbV Web T[o[ċNĂȂƑz肵AWeb T[o[̓[U[pɐVZbVJn܂A SessionID gp܂B SessionID ͍Ă HTTP v̈ꕔƂ Web T[o[ɑM܂B</p>




<p>̍Ō̓_dvłBNCAguEU Web T[o[AvP[V̗ċNĂȂꍇ<em>̂</em>ASessionID [U[ʂɎʂƑzł܂BƂ΁A̒lL[ƂĎgpȂłB̒l̓uEU܂̓T[o[~AċN邽тɃZbg܂B</p>




<p>Cookie T|[gȂACookie 𖳌ɂĂuEUł́AHTTP vwb_̈ꕔƂ SessionID 𑗐M܂B̏ꍇ́A̕@gpă[U[ʂKv܂B܂A<span class="LITERAL">EnableSessionState</span> vvZbTfBNeBugpāAWeb AvP[V Cookie gpȂ悤ɂ邱Ƃł܂BڍׂɂẮA<link linkend="ch11-1-fm2xml"> 11 </link>QƂĂB</p>




<p>Cookie gpɏێɂ́Aev̏ QueryString ɒǉ邩Ay[W̔\̃tH[vf̎ʏ|Xg܂B
</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
<div id="Timeout">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
Timeout</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="LITERAL">Session.Timeout (=</span><var class="replaceable">intMinutes</var><span class="LITERAL">)</span>
</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p><!--<primary>Timeout property (Session)</primary>-->
<!--<primary>expiring</primary><secondary>user sessions
(inactive)</secondary>--> <!--<primary>user
sessions</primary><secondary>maintaining
inactive</secondary>-->Web T[o[y[Wv܂͍XV邱ƂȂA[U[̃ZbVێ镪Pʂ̎ԁB̒l̓ftHg 20 ɐݒ肳܂B</p>



</td>
</tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td></tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE">p[^</td>
</tr>
<tr>
<td colspan="2" class="description">




<dl>
<dt><var class="replaceable">intMinutes</var></dt>
<dd><p>Web T[o[ZbVێ镪łB</p></dd>

</dl>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<span class="PROGRAMLISTING"><pre>&lt;%

' The following code resets the Timeout property of the
' Session object from its default of 20 minutes to 5 
' minutes.

Session.Timeout = 5

%&gt;</pre></span>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>Timeout vpeB͎gpPłB̃vpeB̒l͂ǂꂾłlɐݒł܂ATimeout vpeB̒ĺAe[U[ZbVKvƂ
<!--<primary>memory</primary><secondary>user
sessions</secondary><tertiary>Timeout property
and</tertiary>--> <!--<primary>user
sessions</primary><secondary>memory for</secondary><tertiary>Timeout
property and</tertiary>-->Web T[o[̃ɒډe܂B</p>




<p>TCgւ̃[U[̖K⎞ԂZꍇ́A̐ݒ̂悤ɒႭݒ肷悤Ɍ܂BA1 ̃y[WŃNCAgTChXNvg̓d\ꍇȂǁAey[Wւ̖K⎞Ԃꍇ́A̒l𑝂₷Ƃ܂B</p>




<p>Session IuWFNĝقƂǂ̃vpeBƂ͈قȂÃvpeB݂͌̃ZbVł͂ȂA<em>ׂĂ</em>[U[ZbVɉe܂BSession IuWFNg Timeout vpeB̒l 120 ɐݒ肷ꍇA<em>e</em> [U[̃ZbV́AŌ̗v܂̓y[W̍Ō̍XV 120 ܂ŁAWeb T[o[̃Ɏc܂B</p>



</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
<div id="ContentsCollection">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
Contents RNV</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="PROGRAMLISTING"><pre>Session.Contents.Item("Pi") = 3.14</pre></span></td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p><!--<primary>Session
object</primary><secondary>collections
reference</secondary>--> <!--<primary>Contents
collection</primary><secondary>Session
object</secondary>-->XNvgʂZbVxXR[vɂ (܂A<span class="LITERAL">&lt;OBJECT&gt;</span> ^Ogp<em>Ȃ</em>) ǉꂽׂĂ̕ϐƃIuWFNg܂݂܂B</p>




<p>Session IuWFNg Contents RNVɂ́A ASP RNV̂悤ɁÃvpeB܂B</p>




<dl>
<dt>Item</dt>
<dd><p><!--<primary>Item property</primary><secondary>Contents
collection</secondary>-->Contents RNV̓̃o[̒l擾܂BL[܂̓CfbNXԍgp郁o[w肵܂BL[̒ĺA̍Ōq Key vpeBʂACfbNXgĎ擾܂BƂ΁AContents RNV̗vfl Pi ŏꍇÂ悤ȃR[hsgp܂B</p>




<span class="PROGRAMLISTING"><pre>Session.Contents.Item("Pi") = 3.14</pre></span>




<p>ÕR[hsł́ARNVɊ܂܂ړI̗vf́AL[l "Pi" gpĎw肵܂B̂悤ɏƁÃR[hsgpāAContents RNV̗̂vf̒l擾ł܂B</p>




<span class="PROGRAMLISTING"><pre>dblMyVar = Session.Contents.Item("Pi")</pre></span>




<p>ɖ炩ɂȂ邱ƂłAꂪ Contents RNVɒǉŏ̗vfłƂ܂B</p>




<p>̃R[hs悤ɁAL[ł͂ȂARNVɊ܂܂CfbNXgpĂAContents RNVɊ܂܂vf̒l擾ł܂B</p>




<span class="PROGRAMLISTING"><pre>dblMyVar = Session.Contents.Item(1)</pre></span>




<p>Contents RNVɊ܂܂ŏ̗vf\ɂ́A0 ł͂Ȃ 1 gp܂B͏ȃ|CgłÃR[hs 0 gpƁAϐ <var class="replaceable">dblMyVar</var> ͖`̒lŏ܂BcOȂAɂG[͔܂BʂƂāAϐsK؂ɏ邾łB</p>




<span class="PROGRAMLISTING"><pre>dblMyVar = Session.Contents.Item(0) ' WRONG.</pre></span>




<p>Item  Contents RNṼftHg̃vpeBłAContents RNV Application IuWFNg̃ftHg̃RNVłB܂A 3 s̃R[h́AAvP[Vł܂@ŉ߂܂B</p>




<span class="PROGRAMLISTING"><pre>Session.Contents.Item("Pi") = 3.14
Session.Contents("Pi") = 3.14
Session("Pi") = 3.14</pre></span>




<p>lɁA 3 ̃R[hs܂łƑzł܂B</p>




<span class="PROGRAMLISTING"><pre>Session.Contents.Item(1) = 3.14159
Session.Contents(1) = 3.14159
Session(1) = 3.14159</pre></span>




<p>A Contents RNVɊ܂܂ŏ̗vfL[gpĒ`ĂꍇłBASP ɓYtꂽ}jAɂ͋LڂĂ܂񂪁AOq̍ŏ 2 ̃R[hŝꂩgpɂ́AL[gpĂ̗vf炩ߒ`ĂKv܂BƂ΁AContents RNV 2 Ԗڂ̗vfǉƂ܂B̂ꂩ̃R[hsgpāA̗vf邱Ƃ͂ł܂B</p>




<span class="PROGRAMLISTING"><pre>Session.Contents.Item(2) = 3.14159     ' WRONG.
Session.Contents(2) = 3.14159          ' WRONG.</pre></span>




<p>cOȂA̗OɂO܂B̃R[hgpƁA2 Ԗڂ̕ϐł܂B<em></em></p>




<span class="PROGRAMLISTING"><pre>Session(2) = 3.14159</pre></span>




<p>̖lꍇAContents RNVɊ܂܂̗vf̒lQƂۂɏɈԈSȕ@́ACfbNXł͂ȂL[gp邱Ƃł邱Ƃɂ킩܂B</p>




<p>܂Ao[̃CfbNX͕ύX\邽߁AContents RNV̓̃o[QƂƂL[gp邱ƂdvłBƂ΁AAvP[VɎ̃R[hƂ܂B</p>




<span class="PROGRAMLISTING"><pre>Session("strFirstName") = "Arthur"
Session("strMiddleName") = "Keyton"
Session("strLastName") = "Weissinger"</pre></span>




<p>̕ϐ Contents RNVɒǉꂽŏ 3 ̕ϐłƂƁAł̃CfbNXgpĂꂼQƂł܂B</p>




<span class="PROGRAMLISTING"><pre>strFirst = Session(1) 
strMiddle = Session(2)
strLast = Session(3)</pre></span>




<p>ARNVϐSɍ폜 Remove \bh ({͂Ōq܂) gpꍇ́A<var class="replaceable">strMiddleName</var> ϐ폜ƁACfbNXԍύX܂B</p>




<span class="PROGRAMLISTING"><pre>Session.Contents.Remove("strMiddleName")

strFirst = Session(1)       ' Initializes to "Arthur" 
strMiddle = Session(2)      ' Initializes to "Weissinger"
strLast = Session(3)        ' Initializes to Undefined.</pre></span></dd>




<dt>Key</dt>
<dd><p><!--<primary>Key property</primary><secondary>Contents
collection</secondary>-->Contents RNV̗̓vf̖O\܂Bevf̒l Item vpeBŕ\ƂƂvoĂBlɁAevf̖ÓAKey vpeBɂĕ\܂B</p>




<p>̃L[̖Osȏꍇ́AQƂgpĎ擾ł܂BƂ΁ARNVɊ܂܂ 3 Ԗڂ̗vf̃L[擾ĂA̗vf̒l擾Ƃ܂B̏ꍇ́ÃR[hgpł܂B</p>




<span class="PROGRAMLISTING"><pre>strKeyName = Session.Contents.Key(3)
strKeyValue = Session.Contents.Item(strKeyName)</pre></span></dd>




<dt>Count</dt>
<dd><p><!--<primary>Count property</primary><secondary>Contents
collection (Session)</secondary>-->RNVɊ܂܂錻݂̗vf̐Ԃ܂B</p></dd>

</dl>




<p> ASP RNVƓ悤ɁAItem vpeBgp邱ƂɂAContents RNV̔Cӂ̃tB[h̒l擾ł܂BA{}jȂ̕Ɠ悤ɁAȉ̗ł͍\ZkĂ̂ŁAItem vpeB̎gp𖾎IɎĂ킯ł͂܂Bɗ܂B</p>




<span class="PROGRAMLISTING"><pre>strSecurityCode = Session("UserSecurityCode")</pre></span>




<p>̃R[h́ÃR[h̒Zk`łB</p>




<span class="PROGRAMLISTING"><pre>strSecurityCode = Session.Contents.Item("UserSecurityCode")</pre></span>




<tip id="ch10-23-fm2xml" role="ora">
<p>RNV Item vpeBAKey vpeBA Count vpeB̏ڍׂɂẮA<link linkend="ch04-40130"> 4 </link> <link linkend="ch04-3-fm2xml">4.2 </link>QƂĂB</p>



</tip>

<p>ASP 3.0 ܂ł́AContents RNVɕۑꂽڂ́A[U[ZbVI܂ŃɎc܂BAASP 3.0 ł́ARNṼo[폜ł 2 ̃\bhǉ܂B</p>


</td>
</tr>
</table>
</div>
<div id="Remove">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
Remove</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="LITERAL">Session.Contents.Remove(</span><var class="replaceable">Key</var> <span class="LITERAL">|</span> <var class="replaceable">Index</var><span class="LITERAL">)</span>
</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p>Contents RNṼo[폜܂BIIS 5.0 Œǉꂽ Remove \bhgpƁAׂĂ̕ϐ폜邱ƂȂA Session  Contents RNV̕ϐ폜ł܂B</p>




<p>Remove \bh́ÅǗƃN[AbvɗD邽߁AContents RNVւ̏dvȒǉłBɂA[U[ZbV𒆒fȂŁARNV̗vf̈ꕔ폜ł܂BContents RNV Item vpeBŐ悤ɁARemove \bhĂяoƂ̓CfbNXł͂ȂL[gp邱ƂɏdvłBvf̃CfbNX̓AvP[V̌pԒɕς邱ƂARemove \bhĂяoƁA\ȂʂƂȂ\܂B</p>



</td>
</tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td></tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE">p[^</td>
</tr>
<tr>
<td colspan="2" class="description">




<dl>
<dt>Key</dt>
<dd><p>폜 Contents RNV̓̃o[̖Ow肷镶ϐłB</p></dd>




<dt>Index</dt>
<dd><p>폜 Contents RNV̓̃o[̃CfbNXw肷鐮ϐłB</p></dd>

</dl>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"> </td>
</tr>
<tr>
<td colspan="2" class="description">




<p>̃XNvǵAContents RNV 2 ̃o[폜܂B</p>




<span class="PROGRAMLISTING"><pre>&lt;%
' This script assumes you have been "carrying around" various form
' variables for an online membership request form. The user has filled
' out the form, she has a username and is now a member. Now you would    
' like to remove her form data which you stored in Session variables 
' because it was convenient and the form's security had to be relatively
' high.
strFirstName = Session("strFirstName")
strLastName  = Session("strLastName")

.
.
.
Session.Contents.Remove("strFirstName")
Session.Contents.Remove("strLastName")
.
.
.
%&gt;</pre></span>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
<div id="RemoveAll">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
RemoveAll</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="LITERAL">Session.Contents.RemoveAll</span>
</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p><!--<primary>RemoveAll method, Contents
collection</primary>-->Contents RNVׂ̂Ẵo[폜܂BIIS 5.0 ɉāARemoveAll \bh̓ZbVj邱ƂȂAׂẴZbVXR[vϐ폜ł܂B</p>




<p>Remove \bhƓlARemoveAll \bh Contents RNVւ̏dvȒǉ@\łAʓIȃǗƃN[Abv\ɂ܂B̃\bhgpƁAZbV̂̂j邱ƂȂAׂẴZbVXR[vϐ폜ł܂B</p>



</td>
</tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td></tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE">p[^</td>
</tr>
<tr>
<td colspan="2" class="description">




<p>Ȃ</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>̃XNvǵAContents RNVׂ̂Ẵo[폜܂B</p>




<span class="PROGRAMLISTING"><pre>&lt;%
' This script assumes you have been "carrying around" various form 
' variables for an online membership request form. The user has 
' filled out the form, she has a username
' and is now a member. Now you would like to remove her form data which 
' you stored in Session variables because it was convenient and the
' form's security had to be relatively high.
' strFirstName = Session("strFirstName")
' strLastName  = Session("strLastName")

.
.
.
Session.Contents.RemoveAll
.
.
.
%&gt;</pre></span>




<p>̃XNvǵA[U[K 2  ASP XNvĝŏ̃XNvgłBŏ̃XNvǵA[U[̃uEU 2 Ԗڂ̃XNvgɃ_CNg܂Bŏ̃XNvgł́A[U[̃ZbVxϐ (<var class="replaceable">SessionVar1</var>A<var class="replaceable">SessionVar2</var>A <var class="replaceable">SessionVar3</var>) 쐬܂B</p>




<span class="PROGRAMLISTING"><pre>&lt;HTML&gt;
&lt;HEAD&gt;&lt;TITLE&gt;Session Contents Example Page1&lt;/TITLE&gt;&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;%
Dim strVar1
Dim strVar2
Dim strVar3

strVar1 = "Session Variable 1"
strVar2 = "Session Variable 2"
strVar3 = "Session Variable 3"

' Each of the next three varieties of syntax
' are equivalent.
Session.Content.Item("SessionVar1") = strVar1
Session.Content("SessionVar2") = strVar2
Session("SessionVar3") = strVar3

Response.Redirect SessionPage2.asp
%&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;</pre></span>




<p>2 Ԗڂ̃XNvgł́ASession IuWFNg Contents RNV݂̗̌vf𒲂ׂ܂B</p>




<span class="PROGRAMLISTING"><pre>&lt;HTML&gt;
&lt;HEAD&gt;&lt;TITLE&gt;Session Contents Example Page2&lt;/TITLE&gt;&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;%
Dim intContentsCount
Dim strAppStatus
Dim strKey
Dim intCounter
Dim objMyComponent
Dim arystrNames( )


intContentsCount = Session.Contents.Count
strAppStatus = "Open"
%&gt;
There are <strong class="userinput">&lt;%= intContentsCount %&gt;</strong> items in the 
Session's Contents collection. &lt;BR&gt;
&lt;%
For Each strKey in Session.Contents
%&gt;
   The next item in Session's Contents collection&lt;BR&gt;
   has <strong class="userinput">&lt;%= strKey %&gt;</strong> as its key and
   &lt;%= Session.Contents(strKey) %&gt;
   as its value.&lt;BR&gt;
&lt;%
Next

' Set the AppStatus item in the Contents collection. 
' If this Session variable has been created before this,
' this line resets its value. If it has not been 
' created, this line creates it.
strAppStatus = "Page2...InProcess..."
Session("AppStatus") = strAppStatus

%&gt;
The first three elements of the Session's Contents 
collection are as follows: &lt;BR&gt;
&lt;%
' Retrieve the first three elements of the Contents 
' collection.
For intCounter = 1 to 3
%&gt;
   <strong class="userinput">&lt;%=</strong> Session<strong class="userinput">.Contents(intCounter) %&gt;</strong> &lt;BR&gt;
&lt;%
Next
%&gt;
A second trip through the first three items.
&lt;%
' This could just as accurately have been written 
' like this:
For intCounter = 1 to 3
%&gt;
   <strong class="userinput">&lt;%=</strong> Session<strong class="userinput">.Contents.Item(intCounter) %&gt;</strong> &lt;BR&gt;
&lt;%
Next

' Add an object to the Contents collection, then use that
' object's PrintDoc method through the Contents collection.
' (NOTE: For more on the Server object, see <link linkend="ch09-1-fm2xml">Chapter 9</link>.)

'************************************************************
' If you try this script on your own, it will raise an error
' because of the lack of the Server component.
'************************************************************
Set objMyComponent = Server.CreateObject("MyComp.clsSpecial")
Session ("objRef") = objMyComponent 

' Call the object's method through the Contents collection.
Session ("objRef").PrintDoc
%&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;</pre></span>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>Session IuWFNg Contents RNVɃIuWFNgϐǉƁAContents \ʂẴIuWFNg̃\bhƃvpeBɃANZXł܂BƂ΁ÃR[h MyServerComp IuWFNg̃CX^X쐬A LastUpdated vpeBQƂ܂B</p>




<span class="PROGRAMLISTING"><pre>Dim datLastUpdated
Set Session.Contents(objSessionMyObj)  =  _ 
   Server.CreateObject("MyCompanyDLL.MyServerComp")
datLastUpdated = Session.Contents(objSessionMyObj).LastUpdated</pre></span>




<p><!--<primary>arrays, adding to Contents
collection</primary>-->z Contents RNVɒǉƂ́AzŜǉ܂Bz̗vfύXƂ́Az̃Rs[擾AvfύXāAzŜx Contents RNVɒǉ܂B̗ɁÃ|Cg܂B</p>




<span class="PROGRAMLISTING"><pre>&lt;% Response.Buffer = True%&gt;
&lt;HTML&gt;
&lt;HEAD&gt;&lt;TITLE&gt;Session Array Example&lt;/TITLE&gt;&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;%
' Create an array variable and add it to the 
' Contents collection.
ReDim arystrNames(3)

arystrNames(0) = "Chris"
arystrNames(1) = "Julie"
arystrNames(2) = "Vlad"
arystrNames(3) = "Kelly"

Session.Contents("arystrUserNames") = arystrNames
%&gt;
The second name in the User Names array is &lt;BR&gt;
&lt;%= Session("arystrUserNames")(1) %&gt;
&lt;%

' Change an element of the array being held in the 
' Contents collection. Use a different (new) array 
' to temporarily hold the contents. Creating a new 
' array is the safest way to work with Session 
' arrays because most of the time you cannot be 
' guaranteed how many elements are contained 
' in a Session array created in another script.
arystrNames2 = Session("arystrUserNames")
arystrNames2(1) = "Mark"

Session("arystrUserNames") = arystrNames2
' The second name is now Mark.
%&gt;
&lt;BR&gt;&lt;BR&gt;Now, the second name in the User Names array is &lt;BR&gt;
&lt;%= Session("arystrUserNames")(1) %&gt;&lt;BR&gt;
&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;
NOTE: The first element of the Contents collection is still
1, not 0 -- even though the first element of the array in element 1 
("arystrUserNames") is 0:&lt;BR&gt;&lt;BR&gt;
&lt;%= Session.Contents(1)(0)%&gt; &lt;BR&gt;
&lt;/BODY&gt;&lt;/HTML&gt;</pre></span>




<p><filename>GLOBAL.ASA</filename> t@Cɍ쐬IuWFNǵÃIuWFNg̃vpeB܂̓\bhŏɌĂяo܂ŁAT[o[ł͎ۂɃCX^X܂B</p>




<p>ObjectContext IuWFNggpăgUNVŃIuWFNggpꍇ́ÃIuWFNgɃAvP[VXR[v܂̓ZbVXR[v^ȂłBgUNVŎgpꂽIuWFNǵAgUNV̍ŌɔjAȍ~ɃvpeBQƂ邩̃\bhĂяoƃG[܂B</p>




<p>Session IuWFNg Contents ( StaticObjects) RNV́AApplication IuWFNg Contents RNVɔɎĂ܂B</p>




<p><!--<primary>Contents
collection</primary><secondary>Application
object</secondary>-->Contents RNV Session IuWFNg̃ftHg̃RNVłAApplication IuWFNg Contents RNVƂ͈قȂ 1 ̓삪܂BSession IuWFNg璼ڍڂ擾邱Ƃ͂ł܂BContents RNV (Session IuWFNg̃ftHgRNV)  Item \bh (RNV̏ݒl) ւ̈ÖٓIȎQƂ͐łȂ߂łB</p>




<p>̃R[hƂ܂B</p>




<span class="PROGRAMLISTING"><pre>&lt;HTML&gt;
&lt;HEAD&gt;&lt;TITLE&gt;Strange Behaviour&lt;/TITLE&gt;&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;%
Session.Contents.Item("Item1") = "SessionVar1"
Session.Contents.Item("Item2") = "SessionVar2"
Session.Contents.Item("Item3") = "SessionVar3"
%&gt;
<lineannotation>. . . [additional code]</lineannotation></pre></span>




<p>Contents RNV Session IuWFNg̃ftHg̃RNVł邽߁ÃR[hsgp Item2 QƂł܂B</p>




<span class="PROGRAMLISTING"><pre>strNewVar = Session("Item2")</pre></span>




<p>AApplication IuWFNg Contents RNVƂ͈قȂÃR[hsgpēvfQƂ邱Ƃ͂ł܂B̃R[hśA擾悤ƂϐɉĖ邩AG[𔭐܂B</p>




<span class="PROGRAMLISTING"><pre>strNewVar = Session(2)</pre></span>




<p>A̗O܂B</p>




<span class="PROGRAMLISTING"><pre>strNewVar = Session.Contents.Item(2)</pre></span>




<p>܂</p>




<span class="PROGRAMLISTING"><pre>strNewVar = Session.Contents(2)</pre></span>




<p>͐삵܂B</p>




<p>̓ɂċLq}jA͌܂łAIIS  Personal Web Server ł͈̓тĂ邱ƂmFĂ܂B</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
<div id="StaticObjectsCollection">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
StaticObjects RNV</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="PROGRAMLISTING"><pre>strFirstObjName = _
   Session.StaticObjects.Key(1)</pre></span></td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p><!--<primary>StaticObjects
collection</primary><secondary>Session object</secondary>-->
<!--<primary>session-level
scope</primary><secondary>objects added with</secondary>-->
<!--<primary sortas="OBJECT tags">tags</primary><secondary>session-level objects
added with</secondary>--> <!--<primary>scope</primary><secondary>session-level</secondary>--><span class="LITERAL">&lt;OBJECT&gt;</span> ^O̎gpʂăAvP[VɒǉAZbVxXR[vׂẴIuWFNg܂݂܂BStaticObjects RNVgpāARNV̓̃IuWFNg̃vpeB擾܂BStaticObjects RNVgpāARNV̎w肳ꂽIuWFNg̓̃\bhgp邱Ƃł܂B</p>




<p>Session IuWFNg StaticObjects RNVɂ́A ASP RNV̂悤ɁÃvpeB܂B</p>




<dl>
<dt>Item</dt>
<dd><p><!--<primary>Item property</primary><secondary>StaticObjects
collection</secondary><tertiary>Session
object</tertiary>-->RNV̗̓vf̒l\܂BACew肷ɂ́ACfbNXԍ܂̓L[gp܂B</p></dd>




<dt>Key</dt>
<dd><p><!--<primary>Key property</primary><secondary>StaticObjects
collection</secondary><tertiary>Session
object</tertiary>-->RNV̗̓vf̖O\܂Bɗ܂B</p>




<span class="PROGRAMLISTING"><pre>strFirstObjName = _
   Session.StaticObjects.Key(1)</pre></span>




<p>Session IuWFNg StaticObjects RNV̍ŏ̗vf̖O擾܂B<emphasis role="bold"/></p>




<p>Key vpeB̒lgpāAvf̒l𖼑OŎ擾܂BƂ΁Aŏ̗vf̖O <var class="replaceable">objMyObject</var> łƂ܂B</p>




<span class="PROGRAMLISTING"><pre>strKey = Session.StaticObjects.Key(1)
Session.StaticObjects.Item(strKey).Printer = "Epson 540"</pre></span>




<p>̃R[h́ASession IuWFNg StaticObjects RNV <var class="replaceable">objMyObject</var> vf Printer vpeB̒lݒ肵܂B</p></dd>




<dt>Count</dt>
<dd><p><!--<primary>Count property</primary><secondary>StaticObjects
collection</secondary><tertiary>Session
object</tertiary>-->RNVɊ܂܂錻݂̗vf̐Ԃ܂B</p></dd>

</dl>




<p> ASP RNVƓ悤ɁAItem vpeBgp邱ƂɂAStaticObjects RNV̔Cӂ̃tB[h̒l擾ł܂BA{}jȂ̕Ɠ悤ɁAȉ̗ł͍\ZkĂ̂ŁAItem vpeB̎gp𖾎IɎĂ킯ł͂܂Bɗ܂B</p>




<span class="PROGRAMLISTING"><pre>strPrinterName = Session.StaticObjects("objMyObj").Printer</pre></span>




<p>̃R[h́ÃR[h̒Zk`łB</p>




<span class="PROGRAMLISTING"><pre>strPrinterName = Session.StaticObjects.Item("objMyObj").Printer</pre></span>




<tip id="ch10-32-fm2xml" role="ora">
<p>RNV ItemAKeyA Count vpeB̏ڍׂɂẮA<link linkend="ch04-40130"> 4 </link> <link linkend="ch04-3-fm2xml">4.2 </link>QƂĂB</p>



</tip>
</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<span class="PROGRAMLISTING"><pre>' &lt; FROM GLOBAL.ASA &gt;
' This code resides in the GLOBAL.ASA file at the
' root of the current application. The following
' &lt;OBJECT&gt; tag is only processed once for the current
' application.
' See <link linkend="ch11-1-fm2xml">Chapter 11</link> for more details on the GLOBAL.ASA file.

&lt;OBJECT RUNAT=Server 
SCOPE=Session
ID=AppInfo1 
PROGID="MSWC.MyInfo"&gt;
&lt;/OBJECT&gt;

&lt;OBJECT RUNAT=Server 
SCOPE=Session
ID=AppInfo2 
PROGID="MSWC.MyInfo"&gt;
&lt;/OBJECT&gt;

' &lt;&gt;


&lt;%
' The following code initializes the AppInfo1 component.
' This initialization code can reside anywhere.
AppInfo1.PersonalName = "Gertrude Stein"
AppInfo1.PersonalAddress = "233 Main Street"

AppInfo2.PersonalName = "David Davidson"
AppInfo2.PersonalAddress = "19A West Avenue"

' The following code uses the StaticObjects collection
' of the Session object to retrieve the value
' of the PersonalName property of both AppInfo1 and AppInfo2. 
For Each objInfo In Session.StaticObjects
%&gt;
   The personal name is &lt;BR&gt;
   &lt;%= Session.StaticObjects(objInfo).PersonalName%&gt;
&lt;%
Next
%&gt;

There are &lt;%= Session.StaticObjects.Count %&gt; items
in the Session's StaticObjects collection.</pre></span>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>Session IuWFNg StaticObjects RNVgpƁA<span class="LITERAL">&lt;OBJECT&gt;</span> ^O̎gpʂăZbVXR[vŃCX^XꂽCӂ̃IuWFNgɃANZXł܂BServer.<!--<primary>CreateObject method
(Server)</primary><secondary>StaticObjects collection
and</secondary>--><!--<primary>StaticObjects
collection</primary><secondary>CreateObject method
and</secondary>-->CreateObject gpăCX^XꂽIuWFNǵÃRNVʂăANZXł܂B</p>




<p>Microsoft ɂ IIS 5.0 }jA StaticObjects ̗ł́ÃRNVɑ΂ă[vsƁAeIuWFNg̃vpeBQƂł邱ƂqׂĂ܂B͌\܂B́A}jAł̓RNV̓IuWFNĝ̂\̂ł͂ȂAۂ̓IuWFNĝׂẴvpeB\ƂȂĂ邩łBStaticObjects RNṼIuWFNg̃vpeB܂̓\bhɃANZXꍇÂ悤ɁAKey ̑Ô̊OɃhbgZqgpAɑăvpeB܂̓\bhgpKv܂B</p>




<span class="PROGRAMLISTING"><pre>&lt;%= Session.StaticObjects(objInfo).PersonalName%&gt;</pre></span>




<p>̃R[h삷̂́A<span class="LITERAL">Session.StaticObjects(objInfo)</span>  <var class="replaceable">objInfo</var> IuWFNgւ̎QƂԂ߂łB</p>




<p><filename>GLOBAL.ASA</filename> t@Cō쐬ꂽIuWFNǵÃIuWFNg̃vpeB܂̓\bhŏɌĂяo܂ŁAT[o[Ŏۂɂ̓CX^X܂BāAStaticObjects RNVgpẴIuWFNg̃vpeB܂̓\bhɃANZXł̂́AAvP[VɊ܂܂鑼̈ꕔ̃R[hɂT[o[ŃIuWFNgCX^XꂽɂȂ܂B</p>




<p><!--<primary>scope</primary><secondary>transactional
objects</secondary>--> <!--<primary>application-level
scope</primary><secondary>transactional objects
and</secondary>--> <!--<primary>global
variables</primary><secondary>transactional objects
and</secondary>--> <!--<primary>session-level
scope</primary><secondary>transactional objects
and</secondary>--> <!--<primary>ObjectContext
object</primary><secondary>object scope and</secondary>-->
<!--<primary>transactions, object scope
and</primary>-->ObjectContext IuWFNggpgUNVŃIuWFNggpꍇ́ÃIuWFNgɃAvP[VXR[v܂̓ZbVXR[v^ȂłBgUNVŎgpIuWFNg̓gUNV̍ŌɔjAȍ~ɂ̃vpeBQƂ邩\bhĂяoƃG[܂B



</p>



</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
<div id="Abandon">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
Abandon</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="LITERAL">Session.Abandon</span>
</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p><!--<primary>memory</primary><secondary>user
sessions</secondary><tertiary>releasing</tertiary>-->
<!--<primary>user
sessions</primary><secondary>memory
for</secondary><tertiary>releasing</tertiary>--> <!--<primary>Session
object</primary><secondary>Abandon method</secondary>-->
<!--<primary>Abandon method
(Session)</primary>-->w肳ꂽ[U[ZbVɊւێ邽߂ɁAWeb T[o[ɂĎgpĂ郁܂BÃ[U[̃ZbVɂ͉e܂BAbandon \bh𖾎IɌĂяoȂꍇAWeb T[o[̓ZbV^CAEg܂łׂẴZbVێ܂B</p>



</td>
</tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td></tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE">p[^</td>
</tr>
<tr>
<td colspan="2" class="description">




<p>Ȃ</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>̃XNvggpƁAZbVϐNAy[WɃuEU_CNg郊N[U[NbNł܂B</p>




<span class="PROGRAMLISTING"><pre>&lt;HTML&gt;
&lt;HEAD&gt;&lt;TITLE&gt;Session Abandon Example Page1&lt;/TITLE&gt;&lt;/HEAD&gt;
&lt;BODY&gt;
Click &lt;A HREF = "/SessionAbandonPage2.asp"&gt;here&lt;/A&gt; to reset your user preferences.
&lt;/BODY&gt;
&lt;/HTML&gt;</pre></span>




<p>̃XNvǵAۂɂ̓ZbVϐNA܂B</p>




<span class="PROGRAMLISTING"><pre>&lt;HTML&gt;
&lt;HEAD&gt;&lt;TITLE&gt;Session Abandon Example Page2&lt;/TITLE&gt;&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;%

' The following code abandons the current user session.
' Note that the actual information stored for the current
' user session is not released by the server until the
' end of the current Active Server Pages.

Session.Abandon

%&gt;
Your user preferences have now been reset.
&lt;/BODY&gt;
&lt;/HTML&gt;</pre></span>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>Session IuWFNg Contents RNVJԂgpꍇ́AAbandon \bh֗łBƂ΁ÄقȂ郆[U[ݒZbVϐƂĎĂāÂ悤ɂׂč폜A[U[܂VݒIł悤ɂƂ܂BAbandon \bhgpȂƁAContents RNVeϐ蓮ō폜Kv܂B̕ϐꍇA͎ԂAώGȏƂȂ܂BAbandon \bhgpƁA1 s̃R[hłׂĂ폜ł܂B</p>




<p>ۂɂ́AAbandon \bh݂͌̃y[W̃XNvg̎c肪ꂽɁAWeb T[o[ɂď܂BÃ݂y[W̏Ƀ[U[̃y[WvƁAWeb T[o[ŐVZbVJn܂B</p>




<p>̗ł́AZbVϐ <var class="replaceable">intUserAge</var> ́Ay[W̍Ō܂ŃXNvgɑ΂ėpł܂BAbandon \bh́Ay[W̍Ō܂Ńϐ폜܂B</p>




<span class="PROGRAMLISTING"><pre>Session("intUserAge") = 23
Session.Abandon
[...More Code...]
' The current line successfully retrieves the value of 
' intUserAge.
intAgeCategory = CInt(Session("intUserAge") / 10)
[...End of Script. Session information is removed from web memory now...]

</pre></span>



</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
<div id="Session_OnEnd">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
Session_OnEnd</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="LITERAL">Session_OnEnd</span><!--<primary>Session object</primary><secondary>OnStart and OnEnd events</secondary>-->
<!--<primary>events</primary><secondary>Session object</secondary>-->
<!--<primary>OnEnd event</primary><secondary>Session object</secondary>-->
</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p>[U[̃ZbV^CAEg邩AXNvg Session IuWFNg Abandon \bhĂяoƂɋN܂B</p>




<p>OnEnd CxgvV[W݂ꍇ́Avꂽy[W܂ރAvP[V <filename>GLOBAL.ASA</filename> t@Cɂ܂B</p>



</td>
</tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td></tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE">p[^</td>
</tr>
<tr>
<td colspan="2" class="description">




<p>Ȃ</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<span class="PROGRAMLISTING"><pre>&lt;SCRIPT LANGUAGE = "VBScript" RUNAT = Server&gt;

Sub Session_OnEnd

   ' If the user has a search results recordset open, close
   ' it:
   If IsObject(adoRSResults) Then
      Set adoRSResults = Nothing
   End If

End Sub

&lt;/SCRIPT&gt;</pre></span>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>OnEnd CxgV[W̃R[hł́AApplicationAServerA Session IuWFNĝ݂ɃANZXł܂BłdvȂƂ́AResponse IuWFNg܂ Request IuWFNgɂ̓ANZXł܂B̂߂ɁANCAg_CNg邩ANCAg Cookie 𑗎M邱Ƃ͂ł܂B</p>




<p><!--<primary>logging</primary><secondary>when sessions
start/end</secondary>-->OnEnd Cxg̉\Ȏgp 1 ́AŎgp邽߂ɃT[o[̃Ot@C܂̓eLXgt@CɃ[U[ɊւނƂłB̑sꍇAoĂKv邢̏dvȃ|Cg܂BŏɁAۑOɁȀ̓ZbVϐɕۑKv܂B́Aɐ悤ɁA[U[̍łʓIȃ\[Xł Request IuWFNgɃANZXłȂ߂łB̃R[h́AZbVxϐۑ 1 ̉\ȕ@Ă܂B</p>




<span class="PROGRAMLISTING"><pre>&lt;SCRIPT LANGUAGE = "VBScript" RUNAT = Server&gt;

Sub Session_OnEnd
   
   ' Assume that SessionVar1 contains some user-preference 
   ' information.

   ' It is not important that you understand exactly what is
   ' happening in the following code (you can learn more about 
   ' File objects in <link linkend="ch19-1-fm2xml">Chapter 19</link>). Just suffice it to say 
   ' that these lines of code write the value of the 
   ' SessionVar1 Session variable to the text file 
   ' UserPref.txt.
   Set fs = Server.CreateObject("Scripting.FileSystemObject")
   Set f = fs.GetFile("d:\UserPref.txt")
   Set ts = f.OpenAsTextStream(ForAppending,_
                    TristateUseDefault)
   ts.Write Session(SessionVar1)
   ts.Close

   ' Note that more often than not, if you want to save this
   ' information to the server at the end of a user's session, 
   ' it may very well be more efficient to store it to a 
   ' database than to a text file. However, the general
   ' principal (of storing Session variable information in
   ' the OnEnd event) is similar.

End Sub

&lt;/SCRIPT&gt;</pre></span>




<p>Response IuWFNg͗płȂ߁AResponse IuWFNg <!--<primary>AppendToLog method
(Response)</primary>-->AppendToLog \bhgp邱Ƃ͂ł܂BɁAWeb T[o[̃n[hhCuɒڏ݂sꍇ́AݐƂȂt@C̕pXmĂKv܂B́AServer IuWFNgɃANZXłĂAOnEnd Cxgł <!--<primary>MapPath method
(Server)</primary>-->MapPath \bhgpłȂ߂łBMapPath \bh̏ڍׂɂẮA<link linkend="ch09-1-fm2xml"> 9 </link>́uMapPathvQƂĂB</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
<div id="Session_OnStart">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
Session_OnStart</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="LITERAL">Session_OnStart</span>
</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p><!--<primary>OnStart
event</primary><secondary>Session
object</secondary>-->Web T[o[ŃCX^XꂽZbVĂȂ[U[̃T[o[Ƀy[Wv邽тɋN܂BSession IuWFNg OnStart CxgɃR[h݂ꍇAvꂽy[W̔Cӂ̃R[hOɏ܂B</p>




<p>OnStart CxgvV[W݂ꍇ́Avꂽy[W܂ރAvP[V <filename>GLOBAL.ASA</filename> t@Cɂ܂B</p>



</td>
</tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td></tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE">p[^</td>
</tr>
<tr>
<td colspan="2" class="description">




<p>Ȃ</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<span class="PROGRAMLISTING"><pre>&lt;SCRIPT LANGUAGE = "VBScript" RUNAT = Server&gt;

Sub Session_OnStart

   Dim strSiteStartPage
   Dim strCurrentPage
   Dim timUserStartTime
   Dim strUserIPAddress
   Dim strUserLogon

   ' Use the OnStart event to initialize session-level
   ' variables that your scripts can use throughout the
   ' the duration of the user's session.
   Session("timUserStartTime") = Now( )
   Session("strUserIPAddress") = _
           Request.ServerVariables("REMOTE_ADDR")

   ' Use the OnStart event to redirect the client if
   ' she attempts to enter the site from somewhere
   ' other than the site's home page.
   strCurrentPage = Request.ServerVariables("SCRIPT_NAME")
   strSiteStartPage = "/apps/home/startpage.asp"

   If StrComp(strCurrentPage, strSiteStartPage, 1) Then
      Response.Redirect(strSiteStartPage)
   End If

   ' You can also use the OnStart event of the Session
   ' object to assess user security access from the very
   ' beginning of the user's session. Note this code requires
   ' use of either the Basic authentication or Windows 
   ' NT Challenge Response access control on the web server.
   strUserLogon = Request.ServerVariables("LOGON_USER")
   [...Code to Determine Security Level...]

End Sub

&lt;/SCRIPT&gt;</pre></span>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>NCAg̃uEU Cookie T|[gĂȂA[U[蓮 Cookie ItɂĂꍇA[U[TCgy[Wv<em>т</em>ASession_OnStart Cxg܂BZbV͊Jn܂͈ێ܂B</p>




<p>OnEnd Cxĝ悤ɁAOnStart Cxg̉\Ȏgp 1 ́A[U[ɊւŎgp邽߂ɁA
<!--<primary>logging</primary><secondary>when sessions
start/end</secondary>-->Ot@C܂̓T[o[̑̃eLXgt@CɏނƂłB̑sꍇ́AResponse IuWFNg AppendToLog \bhgpłAWeb T[o[̃n[hhCuɒڏ݂sꍇ́AݐƂȂt@C̕pXmĂKv܂B́ASession IuWFNg OnEnd Cxĝ悤 Server IuWFNgɃANZXł܂ASession_OnStart Cxgł Server IuWFNg MapPath \bhgpłȂ߂łB </p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
</body>
</html>
