- PR -

存在しないファイルでASP.netロジックが起動する

1
投稿者投稿内容
FOX2
会議室デビュー日: 2007/03/16
投稿数: 10
投稿日時: 2008-01-29 11:36
お世話になります。
現在運営しているサイトで以下の様な事象が発生しています。

【環境】
Windows 2000 Svr/ IIS6.0 / ASP VB.net 1.1

【事象】
"http://○○○○/A/B.aspx" は物理的に存在するが、
"http://○○○○/A/B.aspx/A/B.aspx" にリクエストした時、
"http://○○○○/A/B.aspx" のロジックが動いてしまう。
(http://○○○○/A/B.aspx/A/B.aspxは存在しない)

普通に、404になるものと思っていましたがなりません。IIS側の設定などによるものなのかとも思いますが、
物理ファイルのチェックなどを指定するプロパティも見当たらないです。
この事象についての情報をお持ちであれば教えて頂ければと思います。

やりたいこととしては、404用に用意したページに遷移させたいです。

ちなみに、IIS上の404カスタムエラーは上記ページを指定し、
Web.Config上でも
<customErrors defaultRedirect="/404.aspr" mode="On">
としています。

よろしくお願いします。
くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-01-29 12:27
URLに続く'/'は、「拡張パス情報」と呼ばれるものです。

ASP.NETにおいて、Request. PathInfoにて取得できる値となっております。

ですので、B.aspxが呼ばれるわけです。
FOX2
会議室デビュー日: 2007/03/16
投稿数: 10
投稿日時: 2008-01-29 14:44
くまっちさん、情報ありがとうございます。
存在自体を知らず、Webで「拡張パス情報」を調べて納得しました。

面倒ついでにもう一つすみません。
この「拡張パス情報」を有効にしたくない場合、
やはり画面やGlobal.asaxでRequest. PathInfoなどを調べ
自分で弾くしかないのでしょうか?
当サイトではクエリを使用している為、拡張パスは
不要な為止められるならば止めてしまいたいと思っています。
くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-01-29 15:23
完全に拡張パスを使わないのであれば
Global.asaxによるアプリケーションレベルで
PathInfoが存在する場合、エラーページに飛ばすようにすれば
良いのではないでしょうか。

他にもIISが要求を受け取った時点で弾く方法等もあります。
http://www.microsoft.com/japan/msdn/net/aspnet/URLRewriting.aspx

ご自身にあった方法をお選びください。
FOX2
会議室デビュー日: 2007/03/16
投稿数: 10
投稿日時: 2008-01-29 15:52
くまっちさん、重ね重ねありがとうございます。

やはり、自前で何とかするしかないのですね。
(サイトで調べていたら、Vistaでは拡張パスのON/OFFが
チェックボックスで出来そうだったのですが・・・)

IISでのRewriteも市販のものは使用経験があるのですが、
自前で実装することも試してみようと思います。

ありがとうございました。
1

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