DoboWiki
Top
> :メンバー/DOBON!/ASP.NET Tips/セッション機能を使用する をテンプレートにして作成
:メンバー/DOBON!/ASP.NET Tips/セッション機能を使用する をテンプレートにして作成
開始行:
*セッション機能を使用する [#v53791f4]
セッション機能(セッション状態)とは、ユーザーごとにデー...
セッションの仕組みを簡単に説明します。まず、アプリケーシ...
セッションにデータを保存する、あるいはセッションからデー...
#code(vbnet){{
}}
#code(csharp){{
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs...
{
//TextBox1の内容をセッション"name1"に保存する
Session["name1"] = TextBox1.Text;
}
protected void Button2_Click(object sender, EventArgs...
{
//セッション"name1"の内容をTextBox1に復元する
TextBox1.Text = (string)Session["name1"];
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:T...
<asp:Button ID="Button1" runat="server" Text="セ...
OnClick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="セ...
OnClick="Button2_Click" />
</div>
</form>
</body>
</html>
}}
**セッションIDをURLに埋め込む [#bd2b80f0]
セッションIDは、通常はクッキーを使ってやり取りされますが...
#pre{{
<?xml version="1.0"?>
<configuration>
<system.web>
<sessionState cookieless="true" />
</system.web>
</configuration>
}}
#column(補足){{
.NET Framework 2.0からはtrueかfalse以外に、[[HttpCookieMo...
また、ブラウザがクッキーをサポートしているかを調べて、サ...
.NET Framework 2.0ではデフォルトがAutoDetectですが、それ...
詳しくは、[[MSDN:SessionStateSection.Cookieless プロパテ...
}}
このようにすると、URLにセッションIDが埋め込まれ、URLが例...
リンク先が相対パスで示されたリンクの場合は問題ありません...
このようにURLにセッションIDを埋め込む方法は大変危険ですの...
"cookieless"の設定を調べるには、HttpSessionState.IsCookie...
***仮想パスにセッションIDを追加する [#p58f60d8]
仮想パスにセッションIDを追加するには、HttpResponse.ApplyA...
ApplyAppPathModifierメソッドに絶対パスを指定すると、その...
以下に使用例を示します。
#code(vbnet){{
}}
#code(csharp){{
//必要な時にセッションIDが埋め込まれた"test.aspx"の絶対パ...
Label1.Text = Response.ApplyAppPathModifier("test.aspx");
}}
**セッションの有効期限を指定する [#r16fcbc4]
通常セッションには有効期限の指定なしのクッキーが使用され...
言うまでもありませんが、サーバーでいつまでもセッションの...
そのためセッションには有効期限があり、その時間を過ぎるま...
このタイムアウト時間を変更するには、Web.configファイルのs...
#pre{{
<?xml version="1.0"?>
<configuration>
<system.web>
<sessionState timeout="30" />
</system.web>
</configuration>
}}
セッションの有効期限は短い方が、セキュリティ的にはより安...
このタイムアウト時間は、HttpSessionState.Timeoutプロパテ...
***プログラムでセッションを無効にする [#af02e524]
プログラムでセッションを無効にするには、HttpSessionState....
#code(vbnet){{
}}
#code(csharp){{
//現在のセッションをキャンセルする
Session.Abandon();
}}
**有効期限の切れたセッションIDが使用された時の動作を変更...
有効期限の切れたセッションIDがクライアントから送られてき...
しかしこれはセッションにクッキーを使用している場合であり...
セッションIDをURLに埋め込んだ時のこの動作を変更し、セッシ...
#pre{{
<?xml version="1.0"?>
<configuration>
<system.web>
<sessionState cookieless="true" regenerateExpiredSess...
</system.web>
</configuration>
}}
「regenerateExpiredSessionId="true"」(デフォルト)になっ...
**新しいセッションの開始と、セッションの破棄を知る [#h8b6...
新しいセッションが作成された時、SessionStateModule.Start...
StartイベントハンドラとEndイベントハンドラは、それぞれGlo...
MSDNの「[[MSDN:セッション状態イベント]]」には、現在オンラ...
#code(vbnet){{
}}
#code(csharp){{
<%@ Application Language="C#" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
// アプリケーションのスタートアップで実行するコー...
//オンラインユーザー数を初期化
Application["OnlineUsers"] = 0;
}
void Session_Start(object sender, EventArgs e)
{
// 新規セッションを開始したときに実行するコードです
//オンラインユーザー数を1つ増やす
Application.Lock();
Application["OnlineUsers"] = (int)Application["On...
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
// セッションが終了したときに実行するコードです
// メモ: Web.config ファイル内で sessionstate モ...
// InProc に設定されているときのみ、
// Session_End イベントが発生します。session モー...
// StateServer か、または SQLServer に
// 設定されている場合、イベントは発生しません。
//オンラインユーザー数を1つ減らす
Application.Lock();
Application["OnlineUsers"] = (int)Application["On...
Application.UnLock();
}
</script>
}}
また、現在の要求でセッションが作成されたかを調べるには、H...
***参考 [#w2939f84]
-[[MSDN:セッション状態イベント]]
**セッションに使用されるクッキー名"ASP.NET_SessionId"を変...
セッションIDをクッキーに保持している場合、そのクッキーの...
.NET Framework 2.0からは、system.web構成セクションのcooki...
#pre{{
<?xml version="1.0"?>
<configuration>
<system.web>
<sessionState cookieName="MySiteSessionID" />
</system.web>
</configuration>
}}
**特定のページのセッションを無効にする [#u8963678]
@PageディレクティブのEnableSessionState要素にFalseを設定...
#pre{{
<%@ Page Language="C#" EnableSessionState="False" %>
}}
**セッションを保存する方法を変更する [#aaf39f5a]
通常セッションはWebアプリケーションのワーカープロセス内に...
セッションをWebサーバーのメモリに保存するには、InProcとし...
StateServerとすると、ASP.NET状態サービスに保存します。こ...
ASP.NET状態サービスを実行するには、「ASP.NET State Servic...
#pre{{
<configuration>
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=SampleStateServer:4242...
</system.web>
</configuration>
}}
詳しくは、「[[MSDN:セッション状態モード]]」をご覧ください。
**参考 [#z4ca6eb3]
-[[MSDN:ASP.NET のセッション状態]]
//これより下は編集しないでください
#pageinfo(,2007-11-24 (土) 03:13:07,DOBON!,2009-07-29 (水...
終了行:
*セッション機能を使用する [#v53791f4]
セッション機能(セッション状態)とは、ユーザーごとにデー...
セッションの仕組みを簡単に説明します。まず、アプリケーシ...
セッションにデータを保存する、あるいはセッションからデー...
#code(vbnet){{
}}
#code(csharp){{
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs...
{
//TextBox1の内容をセッション"name1"に保存する
Session["name1"] = TextBox1.Text;
}
protected void Button2_Click(object sender, EventArgs...
{
//セッション"name1"の内容をTextBox1に復元する
TextBox1.Text = (string)Session["name1"];
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:T...
<asp:Button ID="Button1" runat="server" Text="セ...
OnClick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="セ...
OnClick="Button2_Click" />
</div>
</form>
</body>
</html>
}}
**セッションIDをURLに埋め込む [#bd2b80f0]
セッションIDは、通常はクッキーを使ってやり取りされますが...
#pre{{
<?xml version="1.0"?>
<configuration>
<system.web>
<sessionState cookieless="true" />
</system.web>
</configuration>
}}
#column(補足){{
.NET Framework 2.0からはtrueかfalse以外に、[[HttpCookieMo...
また、ブラウザがクッキーをサポートしているかを調べて、サ...
.NET Framework 2.0ではデフォルトがAutoDetectですが、それ...
詳しくは、[[MSDN:SessionStateSection.Cookieless プロパテ...
}}
このようにすると、URLにセッションIDが埋め込まれ、URLが例...
リンク先が相対パスで示されたリンクの場合は問題ありません...
このようにURLにセッションIDを埋め込む方法は大変危険ですの...
"cookieless"の設定を調べるには、HttpSessionState.IsCookie...
***仮想パスにセッションIDを追加する [#p58f60d8]
仮想パスにセッションIDを追加するには、HttpResponse.ApplyA...
ApplyAppPathModifierメソッドに絶対パスを指定すると、その...
以下に使用例を示します。
#code(vbnet){{
}}
#code(csharp){{
//必要な時にセッションIDが埋め込まれた"test.aspx"の絶対パ...
Label1.Text = Response.ApplyAppPathModifier("test.aspx");
}}
**セッションの有効期限を指定する [#r16fcbc4]
通常セッションには有効期限の指定なしのクッキーが使用され...
言うまでもありませんが、サーバーでいつまでもセッションの...
そのためセッションには有効期限があり、その時間を過ぎるま...
このタイムアウト時間を変更するには、Web.configファイルのs...
#pre{{
<?xml version="1.0"?>
<configuration>
<system.web>
<sessionState timeout="30" />
</system.web>
</configuration>
}}
セッションの有効期限は短い方が、セキュリティ的にはより安...
このタイムアウト時間は、HttpSessionState.Timeoutプロパテ...
***プログラムでセッションを無効にする [#af02e524]
プログラムでセッションを無効にするには、HttpSessionState....
#code(vbnet){{
}}
#code(csharp){{
//現在のセッションをキャンセルする
Session.Abandon();
}}
**有効期限の切れたセッションIDが使用された時の動作を変更...
有効期限の切れたセッションIDがクライアントから送られてき...
しかしこれはセッションにクッキーを使用している場合であり...
セッションIDをURLに埋め込んだ時のこの動作を変更し、セッシ...
#pre{{
<?xml version="1.0"?>
<configuration>
<system.web>
<sessionState cookieless="true" regenerateExpiredSess...
</system.web>
</configuration>
}}
「regenerateExpiredSessionId="true"」(デフォルト)になっ...
**新しいセッションの開始と、セッションの破棄を知る [#h8b6...
新しいセッションが作成された時、SessionStateModule.Start...
StartイベントハンドラとEndイベントハンドラは、それぞれGlo...
MSDNの「[[MSDN:セッション状態イベント]]」には、現在オンラ...
#code(vbnet){{
}}
#code(csharp){{
<%@ Application Language="C#" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
// アプリケーションのスタートアップで実行するコー...
//オンラインユーザー数を初期化
Application["OnlineUsers"] = 0;
}
void Session_Start(object sender, EventArgs e)
{
// 新規セッションを開始したときに実行するコードです
//オンラインユーザー数を1つ増やす
Application.Lock();
Application["OnlineUsers"] = (int)Application["On...
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
// セッションが終了したときに実行するコードです
// メモ: Web.config ファイル内で sessionstate モ...
// InProc に設定されているときのみ、
// Session_End イベントが発生します。session モー...
// StateServer か、または SQLServer に
// 設定されている場合、イベントは発生しません。
//オンラインユーザー数を1つ減らす
Application.Lock();
Application["OnlineUsers"] = (int)Application["On...
Application.UnLock();
}
</script>
}}
また、現在の要求でセッションが作成されたかを調べるには、H...
***参考 [#w2939f84]
-[[MSDN:セッション状態イベント]]
**セッションに使用されるクッキー名"ASP.NET_SessionId"を変...
セッションIDをクッキーに保持している場合、そのクッキーの...
.NET Framework 2.0からは、system.web構成セクションのcooki...
#pre{{
<?xml version="1.0"?>
<configuration>
<system.web>
<sessionState cookieName="MySiteSessionID" />
</system.web>
</configuration>
}}
**特定のページのセッションを無効にする [#u8963678]
@PageディレクティブのEnableSessionState要素にFalseを設定...
#pre{{
<%@ Page Language="C#" EnableSessionState="False" %>
}}
**セッションを保存する方法を変更する [#aaf39f5a]
通常セッションはWebアプリケーションのワーカープロセス内に...
セッションをWebサーバーのメモリに保存するには、InProcとし...
StateServerとすると、ASP.NET状態サービスに保存します。こ...
ASP.NET状態サービスを実行するには、「ASP.NET State Servic...
#pre{{
<configuration>
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=SampleStateServer:4242...
</system.web>
</configuration>
}}
詳しくは、「[[MSDN:セッション状態モード]]」をご覧ください。
**参考 [#z4ca6eb3]
-[[MSDN:ASP.NET のセッション状態]]
//これより下は編集しないでください
#pageinfo(,2007-11-24 (土) 03:13:07,DOBON!,2009-07-29 (水...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]