- PR -

ASP.net Pageクラスの継承チェック

1
投稿者投稿内容
マシュマロ
会議室デビュー日: 2007/08/11
投稿数: 12
投稿日時: 2007-08-11 13:56
会議室のみなさまのお知恵をお借りしたく投稿させていただきました。

現在下記環境でWebアプリケーションを作成しています。

visual studio.net 2003
asp.net 1.1
C#

アクセスされたページが、共通のPage基底クラスを継承しているかチェックを行い、
継承していなければ何かしらハンドリングをして、ブラウザにはエラー画面を返すという継承チェックを
asp.netのリクエストライフサイクルのどこかに入れることはできますでしょうか

Global.asaxでリクエストされたページのインスタンスにさわることができれば
可能かと考えましたが、それができるのかどうかがうまく調査できませんでした。

以上、よろしくお願いします。
ugaya
会議室デビュー日: 2006/08/03
投稿数: 18
投稿日時: 2008-03-03 05:29
http://msdn.microsoft.com/library/ja/cpref/html/frlrfSystemWebHttpApplicationClassTopic.asp

を見ると、ページのインスタンスが作成された後の最初のGlobalイベントは
AcquireRequestState
のようです。

ちょっとやってみました。
Global.asaxに以下のコードを追記します。

コード:

protected void Application_AcquireRequestState(object sender, EventArgs e)
{
IHttpHandler ihh = (System.Web.UI.Page)HttpContext.Current.Handler;

if (!(ihh is <任意のベースクラス名>))
{
//ベースクラスを継承していない場合
Response.Redirect(<任意のエラーページ名>);
}
}



どうでしょうか?

[ メッセージ編集済み 編集者: ugaya 編集日時 2008-03-03 05:50 ]
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-03-03 08:46
技術的にはugayaさんの方法でよいのではと思います。

もし、管理が目的の場合はコードレビューした方がよいと思います。

意図する継承してても、正しく使用しているかは疑問です。

(見るポイントが決まっているならコードレビューには時間はそれほどかかりません)
マシュマロ
会議室デビュー日: 2007/08/11
投稿数: 12
投稿日時: 2008-05-08 12:51
大変遅れましたが、ご回答ありがとうございます。

ugayaさんの方法で参照できました。



1

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