- PR -

SessionID on Windows 2003 Server

1
投稿者投稿内容
501XX
会議室デビュー日: 2003/09/15
投稿数: 2
投稿日時: 2003-09-15 15:12
Windows 2003 Server + IIS 6.0 + Visual Studio 2003 (.Net Framework 1.1) で開発を行っていますが、Session変数でページ間の情報を受け渡ししようとして壁にあたっています。

下記のコードを実行したところ毎回SessionID値が異なっている (Buttonクリック時 = PostBack時でさえ) ことが分かりました。このため現在はSession変数での情報受け渡しができません。
このコードはWindows 2000 Server + IIS 5.0では同一SessionIDを取得でき、Session変数の受け渡しも正しくできています。


-- フォーム部分 --
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="rireki.aspx.vb" Inherits="rireki"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:Label id="Label1" runat="server"></asp:Label><br>
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button><br>
<asp:HyperLink id="HyperLink1" runat="server" NavigateUrl="rireki.aspx">Link</asp:HyperLink>
</form>
</body>
</HTML>


-- コード部分 --
Public Class rireki
Inherits System.Web.UI.Page
#Region " Web フォーム デザイナで生成されたコード "
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents HyperLink1 As System.Web.UI.WebControls.HyperLink
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = "<br>Session ID: " & Session.SessionID
End Sub
End Class


ASP.NET の Web.ConfigのsessionStateタグは次のように記述しています。
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;uid=sa;pwd="
cookieless="false"
timeout="20"
/>

さらにIISのアプリケーションプールは次のように設定しています。
リサイクルタブ
ワーカープロセスのリサイクル 120分
それ以外の項目はチェックオフ
パフォーマンスタブ
アイドルなワーカープロセスの開放までの待ち時間 20分
カーネル内要求キューを制限する(要求数) 4000
CPU監視を有効にする チェックオフ
Webガーデン 最大ワーカープロセス数 1
状態
Pingを有効にする ワーカープロセスをPingする間隔(秒) 30
ラピッドフェール保護を有効にする
エラー回数 5
間隔(分) 5
識別
定義済み Network Service

Web.config での mode を StateServer に変更してみたり、アプリケーションプールの設定でワーカープロセスのリサイクルを全てチェックオフにしてみましたが、毎回SessionID値が異なる状況は同じです。またIIS5.0プロセス分離モードも設定し試してみましたがまったく状況に変化がありませんでした。

何とかSession変数の機能を使いたいと考えていますが、行き詰まっています。
上記問題について解決策などお持ちの方がおられましたら、お教え願えませんでしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)