- PR -

別仮想ディレクトリのMapPath取得方法

1
投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2005/07/14
投稿数: 66
投稿日時: 2006-07-14 15:10
いつもお世話になっております。
ASP2.0開発環境でお聞きしたいのですが、

仮想ディレクトリ TEST1 (絶対パス c:¥wwwroot¥TEST1)
仮想ディレクトリ TEST2 (絶対パス c:¥wwwroot¥TEST2)

があった場合に
TEST2側のソースファイルで

Server.MapPath("TEST1/");

でパスを取得した場合
c:¥wwwroot¥TEST2¥TEST1¥になってしまいます。
自分の希望としては
c:¥wwwroot¥TEST1¥と値を取得したいのですが
どうすればよいのでしょうか。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-14 15:24
Webアプリケーションとして別のものになっているんですよね。
であれば、できません。
未記入
ベテラン
会議室デビュー日: 2005/07/14
投稿数: 66
投稿日時: 2006-07-14 15:27
はい、仮想ディレクトリとしては別になっています。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-07-14 15:32
こんにちは。

引用:

どっとねっとふぁんさんの書き込み (2006-07-14 15:24) より:
Webアプリケーションとして別のものになっているんですよね。
であれば、できません。


ディレクトリトラバーサルが起きない仕組みってことですかね。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-14 15:48
> 仮想ディレクトリとしては別になっています。

仮想ディレクトリとWebアプリは異なります。
とはいってもたぶんWebアプリとしても異なるのでしょう。
VSで別プロジェクトとして作ってたりしませんか?
であればできません。

> ディレクトリトラバーサルが起きない仕組みってことですかね。

同一サーバ上で動いている、ということから誤解が生じているのかも
しれませんが、たとえばWindowsアプリで異なるアプリケーション間で
相手方のアプリケーションの設定情報を取り出すことは普通できませんよね。
Webアプリケーションといえどもそれは同じことです。
MapPathは今のアプリケーションの環境から物理的なフォルダ情報を
取り出すものなので、アプリケーションが異なれば利用できません。

ディレクトリトラバーサルについては、IIS上の設定で防ぐ仕組みが
ありますが、この件とは関係ありません。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-07-14 16:01
引用:

どっとねっとふぁんさんの書き込み (2006-07-14 15:48) より:

MapPathは今のアプリケーションの環境から物理的なフォルダ情報を
取り出すものなので、アプリケーションが異なれば利用できません。

ディレクトリトラバーサルについては、IIS上の設定で防ぐ仕組みが
ありますが、この件とは関係ありません。


あ、[親のパスを有効にする]オプションのことですね。
ご指摘ありがとうございます。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-07-14 20:27
引用:

TEST2側のソースファイルで

Server.MapPath("TEST1/");



Server.MapPath("../TEST1/");
または
Server.MapPath("/TEST1/");
でしょう。

# Windows2000Server/ASP.NET1.1で確認
1

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