C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: ASP.NETのカスタムエラーページについて


(過去ログ 10 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■2116 / inTopicNo.1)  ASP.NETのカスタムエラーページについて
  
□投稿者/ はるくん (1回)-(2007/03/19(Mon) 15:31:58)

分類:[C# (ASP.NET)] 

ASP.NETのカスタムエラーについて悩んでおります。
(VS.Net2003/IIS5.1)

◆Webサイト構成

WebApp1(仮想ディレクトリ)

├─WebForm1.aspx(AまたはBフォルダ配下のWebFormへリダイレクトするボタン配置)

├─A(フォルダ)
││
│└─WebForm2.aspx

├─B(フォルダ)
││
│└─WebForm3.aspx

└─error.html


◆Web.Configの中身(カスタムエラー定義箇所)

<customErrors defaultRedirect="http://xxx/WebApp1/error.html" mode="On" />


以下手順を踏みながら説明します。

@ 上記の状態で、Aフォルダのアクセス権限を全て外します。
⇒ Windowsエクスプローラから、フォルダプロパティのセキュリティタブにて、ユーザを全て削除。

A WebForm1.aspxページを開き、Aフォルダ配下のWebForm2.aspxへリダイレクトします。
⇒ 当然エラーとなるのですが、カスタムエラーページであるerror.htmlページではなく、
「'/WebApp1' アプリケーションでサーバー エラーが発生しました..。」のASP.NET側が
出しているエラーページへ遷移されてしまいます。
<ご質問>なぜ、カスタムエラーが表示されないのでしょうか?

B WebForm1.aspxページへ戻り、Bフォルダ配下のWebForm3.aspxへのリダイレクトをします。
⇒ 正常に遷移します。

C Aフォルダのアクセス権を元に戻し、WebForm2.aspxのページロードて内部処理エラー
(例えばint.parse("A")など)を発生させるようにし、項Aをやる。
⇒ Web.Configファイル定義のカスタムエラーページへ遷移します。

ご教授のほど、どうぞよろしくお願いします。

引用返信 編集キー/
■2117 / inTopicNo.2)  Re[1]: ASP.NETのカスタムエラーページについて
□投稿者/ ぼのぼの (26回)-(2007/03/19(Mon) 16:07:24)
No2116 (はるくん さん) に返信
カスタムエラーページに遷移するのはプログラム内で例外が発生した場合で、
> @ 上記の状態で、Aフォルダのアクセス権限を全て外します。
> ⇒ Windowsエクスプローラから、フォルダプロパティのセキュリティタブにて、ユーザを全て削除。
>
> A WebForm1.aspxページを開き、Aフォルダ配下のWebForm2.aspxへリダイレクトします。
> ⇒ 当然エラーとなるのですが、カスタムエラーページであるerror.htmlページではなく、
> 「'/WebApp1' アプリケーションでサーバー エラーが発生しました..。」のASP.NET側が
> 出しているエラーページへ遷移されてしまいます。
この場合は、クライアントからのリクエストはプログラムの入口より手前で弾かれてるわけで。
エラーはASP.NETではなくIISが出しているんではないでしょうか?
で、この設定は、IISマネージャのカスタムエラータブで変えられたと記憶してをります。
引用返信 編集キー/
■2118 / inTopicNo.3)  Re[2]: ASP.NETのカスタムエラーページについて
□投稿者/ はるくん (2回)-(2007/03/19(Mon) 16:47:45)
ぼのぼの様。
ご返信、ありがとうございます。

> この場合は、クライアントからのリクエストはプログラムの入口より手前で弾かれてるわけで。
> エラーはASP.NETではなくIISが出しているんではないでしょうか?
確かにそれも考えたのですが、試しにWeb.ConfigのcustomErrorsの属性をmode="Off"に設定すると、
「'C:\WebApp1\A\web.config' へのアクセスは拒否されました。ファイル変更の監視を開始できませんでした。 」
とスタックトレースを含むエラーページが表示されますので、やはりASP.NETが出していると思っています。

#なぜに存在しない'C:\WebApp1\A\web.config'へのアクセスが拒否..と怒られるのか。それさえ不明です。

ちなみに、WebForm1.aspxからのリダイレクトは以下で行っています。
Response.Redirect("./A/WebForm2.aspx");

何かお分かりになりますでしょうか?
すみませんが、よろしくお願いします。

引用返信 編集キー/
■2122 / inTopicNo.4)  Re[3]: ASP.NETのカスタムエラーページについて
□投稿者/ ぼのぼの (27回)-(2007/03/19(Mon) 18:24:45)
No2118 (はるくん さん) に返信
> 確かにそれも考えたのですが、試しにWeb.ConfigのcustomErrorsの属性をmode="Off"に設定すると、
> 「'C:\WebApp1\A\web.config' へのアクセスは拒否されました。ファイル変更の監視を開始できませんでした。 」
> とスタックトレースを含むエラーページが表示されますので、やはりASP.NETが出していると思っています。
>
> #なぜに存在しない'C:\WebApp1\A\web.config'へのアクセスが拒否..と怒られるのか。それさえ不明です。
Webアプリケーションが動いてる途中でWeb.configを変更すると、すぐに反映されます。
Windowsアプリと異なり、「動きっぱなし」が基本のWebアプリケーションが、
このような動作をどのように実現してるかっつーと、常にWeb.configの変更を監視してゐるわけです。

で、ASP.NETの仕様としてWeb.configはカレントとルート両方に作成することができて、
もしカレントに設定があればそっちが優先されるようになってます。

なのでそのエラーは、クライアントからのリクエストを受けて動き出したプログラムから出たものではなく、
ビルドして実行してWebアプリケーションが起動した瞬間に「カレントにWeb.configはあるかな〜?」
と確認しにいこうとしてそのときに出たものなのではないでしょうか?

というようなことも踏まえて、

> ⇒ Windowsエクスプローラから、フォルダプロパティのセキュリティタブにて、ユーザを全て削除。

これが、そもそもテスト条件として不適切なのではないでしょうか?

ASP.NETやIISのワーカプロセスからフォルダ内を読み取る権限まで奪ってしまったら、
Webサーバとしてまともに動かないんじゃないかということは、
それらが内部的にどのような動きをするのかを詳しく知らなくても容易に想像できます。

そもそもそのWebアプリケーションをどのような仕様にしたくて、
そのために何を確認しようとしているのか?
という外部仕様的な部分を先に示して頂けると、もっといろんな情報が得られるかもしれません。
引用返信 編集キー/
■2127 / inTopicNo.5)  Re[4]: ASP.NETのカスタムエラーページについて
□投稿者/ はるくん (3回)-(2007/03/19(Mon) 21:01:35)
ぼのぼの様。
度々ありがとうございます。

>> ⇒ Windowsエクスプローラから、フォルダプロパティのセキュリティタブにて、ユーザを全て削除。
>
> これが、そもそもテスト条件として不適切なのではないでしょうか?
>
> ASP.NETやIISのワーカプロセスからフォルダ内を読み取る権限まで奪ってしまったら、
> Webサーバとしてまともに動かないんじゃないかということは、
> それらが内部的にどのような動きをするのかを詳しく知らなくても容易に想像できます。
よく考えてみたら確かにそうですね..。
変な質問していたのですね..すみませんでした。


> そもそもそのWebアプリケーションをどのような仕様にしたくて、
> そのために何を確認しようとしているのか?
> という外部仕様的な部分を先に示して頂けると、もっといろんな情報が得られるかもしれません。
はい。どのような仕様かといいますと、このWebサイトはWindows認証をさせるようにして
サーバに登録済みのユーザでログインしてもらうことを想定しています。
そこで、各フォルダ毎に設定したアクセス権限を利用してセキュリティを設定したいと考えています。
(例えばユーザαはフォルダAにアクセスできないようにする場合⇒フォルダAのセキュリティに登録しない等)

どのフォルダもまずはワーカプロセス(ASPNET)ユーザは必須として、それに各フォルダにアクセス可能なユーザ
のみを登録していく。といった感じでしょうか。

で、アクセスできないユーザからのアクセスがあった場合、以下のページが表示されてしまいます。

--->ここから
'/WebApp1' アプリケーションでサーバー エラーが発生しました。
--------------------------------------------------------------------------------

アクセスが拒否されました。
説明 : この要求の処理に必要なリソースにアクセスしようとしてエラーが発生しました。要求された応答を表示するアクセス許可がない可能性があります。

エラー メッセージ 401.3: 指定された資格情報を使用してこのディレクトリまたはページを表示するためのアクセス許可がありません。ACL によってアクセスが拒否されました。Web サーバー管理者に相談してアクセスを取得してください。
<---ここまで

ブラウザのアドレスは「http://xxx/WebApp1/A/WebForm1.aspx」となっていますので、IISではないと思っていますが..。

このページではなく、カスタムエラーページへ遷移させることは可能でしょうか?

引用返信 編集キー/
■2138 / inTopicNo.6)  Re[5]: ASP.NETのカスタムエラーページについて
□投稿者/ Moo (47回)-(2007/03/20(Tue) 11:38:47)
Moo さんの Web サイト
401.3ということは「統合 Windows 認証」関連でしょうか
> --->ここから
> '/WebApp1' アプリケーションでサーバー エラーが発生しました。
> --------------------------------------------------------------------------------
> 
> アクセスが拒否されました。 
> 説明 : この要求の処理に必要なリソースにアクセスしようとしてエラーが発生しました。要求された応答を表示するアクセス許可がない可能性があります。 
> 
> エラー メッセージ 401.3: 指定された資格情報を使用してこのディレクトリまたはページを表示するためのアクセス許可がありません。ACL によってアクセスが拒否されました。Web サーバー管理者に相談してアクセスを取得してください。
> <---ここまで

http://support.microsoft.com/kb/810572/ja
が参考になりませんか?

引用返信 編集キー/
■2142 / inTopicNo.7)  Re[6]: ASP.NETのカスタムエラーページについて
□投稿者/ ぼのぼの (28回)-(2007/03/20(Tue) 12:13:05)
@ITの連載:プログラミングASP.NETの第18回も参考になるかもです。
http://www.atmarkit.co.jp/fdotnet/aspnet/index/index.html
引用返信 編集キー/
■2144 / inTopicNo.8)  Re[7]: ASP.NETのカスタムエラーページについて
□投稿者/ はるくん (4回)-(2007/03/20(Tue) 17:34:20)
Moo様、ぼのぼの様、参考URLをありがとうございました。

色々と見させていただき、統合Windows認証を使用したWebアプリについてかなり勉強になり助かりました。
しかしながら、やはり上記「アクセスが拒否されました..」エラー発生時のカスタムエラーページ表示はできませんでした..。

どなたか、ご自身の環境でうまくいっている(カスタムページに遷移するよ)という方いらっしゃいましたら
1) Web.Config設定内容(初期値からの変更内容)
2) ASPXページが存在するWindowsフォルダのセキュリティ設定内容
を教えていただけないでしょうか?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -