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

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

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

Re[6]: デバック時とブラウザ時のカレントディレクトリの相違について


(過去ログ 91 を表示中)

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

■54617 / inTopicNo.1)  デバック時とブラウザ時のカレントディレクトリの相違について
  
□投稿者/ TAMA (12回)-(2010/10/27(Wed) 17:53:54)

分類:[.NET 全般] 

いつもお世話になっております。

現在開発環境のデバック時とブラウザで表示した際のカレントディレクトリの相違に困っています。

■環境
Visual Web Developer 2010 Express
IIS7.0

開発環境ディレクトリ

aaa.sln
aaa--
連pp_Themes
亙mage
亙ndex.aspx
聾eb.config
賂lobal.asax 等


@デバックした際のカレントディレクトリ
/index.aspx

Aブラウザで表示した際のカレントディレクトリ
/aaa/index.aspx

IISの設定では上記のaaaフォルダでアプリケーションを作成し、
カレントディレクトリとしています。またAが当方の望むディレクトリです。

デバックの設定等にカレントディレクトリを変更出来たりはしませんか?
また当方のディレクトリの作成方法等がそもそもおかしいのでしょうか?

ご回答の程よろしくお願いいたします。
引用返信 編集キー/
■54621 / inTopicNo.2)  Re[1]: デバック時とブラウザ時のカレントディレクトリの相違について
□投稿者/ ちゃっぴ (46回)-(2010/10/27(Wed) 18:30:26)
ちゃっぴ さんの Web サイト
そもそも Web application で current directory なんて利用すべきではありません。
利用しなくてもできるのでやりたいことを書きましょう。
引用返信 編集キー/
■54625 / inTopicNo.3)  Re[2]: デバック時とブラウザ時のカレントディレクトリの相違について
□投稿者/ TAMA (13回)-(2010/10/27(Wed) 18:50:29)
No54621 (ちゃっぴ さん) に返信
> そもそも Web application で current directory なんて利用すべきではありません。
> 利用しなくてもできるのでやりたいことを書きましょう。

さっそくの返信ありがとうございます。
やりたいことはデバック時とブラウザ時でパスを同じにしたいです。

今はデバック時とブラウザ時でパスを変えるコードを書いている状況(ナンセンスですよね)です。
↓このような感じです。
string strDataDir;
if (System.Text.RegularExpressions.Regex.Match(Request.Url.ToString(), "localhost").Success == true)
{
strDataDir = Server.MapPath("/data/");
}
else
{
strDataDir = Server.MapPath("/aaa/data/");
}
引用返信 編集キー/
■54626 / inTopicNo.4)  Re[3]: デバック時とブラウザ時のカレントディレクトリの相違について
□投稿者/ ちゃっぴ (47回)-(2010/10/27(Wed) 19:00:41)
ちゃっぴ さんの Web サイト
~ を使いましょう。Application の root がとれます。

strData = Sever.MapPath("~/data/");
引用返信 編集キー/
■54637 / inTopicNo.5)  Re[4]: デバック時とブラウザ時のカレントディレクトリの相違について
□投稿者/ TAMA (14回)-(2010/10/28(Thu) 09:15:44)
No54626 (ちゃっぴ さん) に返信
> ~ を使いましょう。Application の root がとれます。
>
> strData = Sever.MapPath("~/data/");

ご回答ありがとうございます。
先に「利用しなくてもできるのでやりたいことを書きましょう。」とご指摘いただいたのに、
やりたい事を明確に伝えておらず、余計な回答の手間を取らせてしまいました。
申し訳ありませんでした。

困っている点は具体的には以下の2点です。

@ファイルの作成・削除
「using System.IO;」で以下のように
  var fsHinagataExcel = new FileStream(strDataDir + strFileName, FileMode.Open, FileAccess.ReadWrite);
エクセルの読み込み、作成、削除をしており、
ここの部分のパスの取得で、「Sever.MapPath("~/data/");」とすると
うまくエクセルまでのパスが取得できず、前述のように

============================
string strDataDir;
if (System.Text.RegularExpressions.Regex.Match(Request.Url.ToString(), "localhost").Success == true)
{
strDataDir = Server.MapPath("/data/");
}
else
{
strDataDir = Server.MapPath("/aaa/data/");
}
===========================
にて絶対パスを設定している次第です。
やりたいことはここで、デバック時とブラウザ時で処理を分けなくてもよい方法を模索しています。

AJavaScriptファイルの読み込み
マスターページを使用しており、マスターページの<head>に以下のように
共通使用するJavaScriptを読み込んでいます。

<script type="text/javascript" src="/scripts/common.js"></script>
※上記はデバック時はうまくいきます。
※ブラウザでは以下のようにしないとJavaScriptを読み込めません。
<script type="text/javascript" src="/aaa/scripts/common.js"></script>

マスターページはいろいろな階層に配置されたaspxファイルで読み込まれるため、
絶対パスで指定しないとうまくいかないかと思っており、
また<script>タグの内容をプログラムで動的に変更することも出来ないため、
@のような代替案も思いつかず、非常に困っています。

以上、長文となってしまいましたが、何卒ご回答の程よろしくお願いいたします。
引用返信 編集キー/
■54638 / inTopicNo.6)  Re[5]: デバック時とブラウザ時のカレントディレクトリの相違について
□投稿者/ shu (126回)-(2010/10/28(Thu) 09:36:27)
No54637 (TAMA さん) に返信

ここだけ
> また<script>タグの内容をプログラムで動的に変更することも出来ないため、
RegisterStartupScriptでscriptをプログラム上で作成して出力することが出来ます。
Framework4 ではPage.RegisterStartupScriptは非推奨で
ClientScriptManager.RegisterStartupScript を使うようにと書いてあります。

参考URL: http://msdn.microsoft.com/ja-jp/library/asz8zsxy.aspx
引用返信 編集キー/
■54649 / inTopicNo.7)  Re[5]: デバック時とブラウザ時のカレントディレクトリの相違について
□投稿者/ もりお (299回)-(2010/10/28(Thu) 14:18:28)
No54637 (TAMA さん) に返信

プロジェクトのプロパティにおきまして、仮想パスに /aaa/ をセットするとよいの
ではないでしょうか。

引用返信 編集キー/
■54652 / inTopicNo.8)  Re[5]: デバック時とブラウザ時のカレントディレクトリの相違について
□投稿者/ todo (63回)-(2010/10/28(Thu) 15:06:40)
> ここの部分のパスの取得で、「Sever.MapPath("~/data/");」とすると
> うまくエクセルまでのパスが取得できず、

アプリケーションルートのDataフォルダが取れるはずですが、
何が問題なのでしょうか?
引用返信 編集キー/
■54659 / inTopicNo.9)  Re[6]: デバック時とブラウザ時のカレントディレクトリの相違について
□投稿者/ TAMA (15回)-(2010/10/28(Thu) 18:25:37)
■todo様
> アプリケーションルートのDataフォルダが取れるはずですが、
> 何が問題なのでしょうか?

再度確認した所、問題がないことが判明しました。
「~」を利用するのは自分で調べて分かっていたので、
その上で試行錯誤してNGだったはずなのですが・・・
いろいろ考え違いをしていたようです。

■shu様
>RegisterStartupScriptでscriptをプログラム上で作成して出力することが出来ます。
>Framework4 ではPage.RegisterStartupScriptは非推奨で
>ClientScriptManager.RegisterStartupScript を使うようにと書いてあります。
情報ありがとうございます。
さっそく、該当箇所をClientScriptManager.RegisterStartupScriptを利用する形に修正いたします。

■もりお様

いつもありがとうございます。
正に求めていた回答です。
こういう設定があるはずだと思っていたのですが、見つけられずにいました。

ご回答いただいた皆様、真にありがとうございました。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -