ASP.NET のアプリケーション状態は、すべてのクライアントがアプリケーション全体で使う状態情報の格納に使われます。
マイクロソフトによると、アプリケーション状態はアプリケーション全体で利用され、サーバーに固有のものであり、 読み書き可能なデータも格納できるが、サーバーアフィニティを避けるためには、 呼び出し専用データのみを格納すべきとのことです。
スポンサーリンク
また、アプリケーション状態は ASP ( Active Server Pages ) からの移行を意識した互換性を目的とする部分があり、ASP.NET では使用することは少ないと思います。ASP.NET ではアプリケーション状態(読み出し専用の場合)の代わりに、読み出し専用の静的変数を使用するほうがパフォーマンス的にも有効です。
アプリケーション状態管理と静的変数の使用サンプル
アプリケーション状態を使用するサンプルコードになります。グローバルアプリケーションクラス ( Global.asax ) を追加し、その中でアプリケーション状態管理と静的変数の読み取りを行っています。
VB.NET
Public Class Global_asax
Inherits System.Web.HttpApplication
' グローバル静的変数を使用する場合
Public Shared app_version As String = "2.0.0.0"
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' アプリケーションの起動時に呼び出されます。
' アプリケーション状態を使用する場合
Application("app_version") = "1.0.0.0"
End Sub
End Class
C#
namespace WebApplication2
{
public class Global : System.Web.HttpApplication
{
// グローバル静的変数を使用する場合
static public string app_version = "2.0.0.0";
protected void Application_Start(object sender, EventArgs e)
{
// アプリケーション状態を使用する場合
Application["app_version"] = "1.0.0.0";
}
}
}
アプリケーション状態管理をフォームで読み取る
アプリケーション状態およびグローバル静的変数を各フォームで取得するサンプルコードになります。
ASPX
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>状態管理を読み出す</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
VB.NET
Partial Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' アプリケーション状態を取得する
Label1.Text = Application("app_version") ' 1.0.0.0
' グローバル静的変数を取得する
Label2.Text = Global_asax.app_version ' 2.0.0.0
End Sub
End Class
C#
namespace WebApplication2
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// アプリケーション状態を取得する
Label1.Text = Application["app_version"].ToString(); // 1.0.0.0
// グローバル静的変数を取得する
Label2.Text = Global.app_version; // 2.0.0.0
}
}
}