ASP.NETでは、HttpRequest.PathInfoを使うことで、以下のようにtest.aspxの後に"/"を使った追加情報を

URLに付加することで、文字列を取得することができるようです。
http://hoge.com/test.aspx/fuga
(fuga)を取得可能。

しかし、私の環境で試したところ、404エラーになってしまいます。
何か、設定をすれば良いのだと思いますが、いろいろネットで調べたのですが結局わかりませんでした。

どのように設定すればよいのでしょうか。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/03/08 18:19:36
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:haruo-31 No.1

回答回数80ベストアンサー獲得回数10

ポイント35pt

すみません、詳しく無いくせに回答しますが、

下URLで真逆の状況を解決したいという内容が投稿されています。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=43295&fo...

Global.aspxかIISの設定から調整できるようです。

id:tetra_sync

回答ありがとうございます。

上記URL中にあるGlobal.asaxの記述は、すでにPathInfoが動作していた場合の対処法です。

ちなみに試しに追加パス情報を含んだURLをたたいた時に、Application_BeginRequestが呼ばれるか試したんですが、呼ばれませんでした。

ASP.NETエンジンまで到達していないということでしょうか。

やはりIISでの設定だと思います。

しかし上記URLでは、自前でPathInfoを無効にするロジックを実装するような結論になっています。

ということは、追加パス情報を有効/無効で切り替えるような単純な設定項目が無いという事でしょうか。

上記URLのMSDNへのリンクでは、ASP.NET内での動的なURLの書き換え方法が記載されています。

また、404エラーをaspxでキャッチする方法もあります。

PathInfoが動作しない場合の代替手段として検討したいと思います。

2008/03/07 16:06:00
id:haruo-31 No.2

回答回数80ベストアンサー獲得回数10

ポイント35pt

すみません、再チャレンジでお願いします。

http://forums.iis.net/p/979135/1249084.aspx

一部引用。

「原因が見つかりました。UrlScanです!たったこれだけのことでした:パスに"."を許可しない設定が入っていました。UrlScan.iniを変更(AllowDotInPath=1に設定)して、IISを再起動したら動くようになりました。」

However, I found the problem: UrlScan! Doing just what it was told to do: that is, not allow paths with "." in them. Once I changed UrlScan.ini (AllowDotInPath=1) and re-started IIS, it now works.

id:tetra_sync

URLScan.ini が私の環境にはありませんでした。

2008/03/08 17:56:00
  • id:tetra_sync
    自己解決しました。

    IIS5での設定です。
    (Webサイト名)のプロパティ→ディレクトリタブ→構成ボタン→マッピングタブ→
    アプリケーションのマッピングで.aspxを選択して編集→
    ファイルの存在を確認する→チェックをはずす

    これによってPathInfoを取得することができました。
    逆に無効にしたい場合はチェックを入れればよいです。
  • id:haruo-31
    すみません…2回めの回答はコメントで書きたかったんですが、コメント禁止だったもので…
    これはトリビアですが…ちなみにIIS5を使う場合は、LockDownツールを使う事を推奨します。
  • id:tetra_sync
    >>haruo-31さん
    はてな自体あまり使用したことが無く(数年ぶり)、とりあえずデフォルト設定で質問しました。
    LockDownツールなるものがあるんですね。
    このツールを導入することによりUrlScanもインストールするらしいので、当然AllowDotInPathの設定を変更しなければなりません。
    (私の場合もドットをPathInfoに含めるので)
    その点でharuo-31さんの回答は有用だと思います。
    ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません