すべての単一ページで使用可能なセッション内の特定のデータが必要な場合、最も簡単な方法は、セッションが使用可能な初期のパイプライン イベントの 1 つで状態をチェックする専用モジュールを用意することです (要求状態の取得イベントが最も適しているように思えます)。
public class CustomConditionCheckModule : IHttpModule
{
public void Init( HttpApplication context )
{
context.AcquireRequestState += new EventHandler( acq_req_state );
}
public void acq_req_state( object sender, EventArgs e )
{
// check your condition there - the data is in session
var session = HttpContext.Current.Session;
if ( ... the condition ... )
Response.Redirect( "~/anonymous.page.aspx" );
}
}
次に、匿名でアクセスできるページも必要です (web.config
これには のセクションが必要です)。
<location path="anonymous.page.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>