- PR -

自作クラス内でMapPathを使用するとエラー(ASP.NET)

1
投稿者投稿内容
NAO
ベテラン
会議室デビュー日: 2003/09/24
投稿数: 51
投稿日時: 2004-02-03 16:43

現在、自作クラス内のメソッドにてMapPathを使用したいと考えている
のですが、どうしてもエラーになってしまいます。

「プログラム部分」
private static void ERR_LOG()
{
string Path = HttpContext.Current.Server.MapPath(".");
}

「エラー内容」
>'System.NullReferenceException' のハンドルされていない例外が BATCH.exe
>で発生しました。
>追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。

かなり調べているのですが、お手上げ状態です。
ご存知の方、ご教授のほど宜しくおねがいします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-03 17:49
 オブジェクト参照が設定されていない、ということは、
HttpContext.Current.Server
のどれかがnull(nothing)だと言うことです。ここにブレークポイントを張って、順番にマウスカーソルをあてると、どこがnullですか?

 それで、どのように使っていますか?・・・という方が重要だな。
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2004-02-03 17:59
引用:

NAOさんの書き込み (2004-02-03 16:43) より:

>'System.NullReferenceException' のハンドルされていない例外が BATCH.exe



この「BATCH.exe」とやらは、どのような手段で呼び出していますか?
本当にASP.NETで動いていますか?
たとえば、実はWebフォームからProcessクラスなりShell関数なりで実行している、とか……

[ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2004-02-03 18:01 ]
NAO
ベテラン
会議室デビュー日: 2003/09/24
投稿数: 51
投稿日時: 2004-02-03 18:09
回答ありがとうございます。

>マウスカーソルをあてると、どこがnullですか?
Currentが未定義の値という風になっていました。

使い方としては、変数に取得後、その場所のファイルに書き込みをおこなっています。

string Path = HttpContext.Current.Server.MapPath("./Log/ErrLog.txt");

StreamWriter s = null;
System.Text.Encoding Encod = System.Text.Encoding.GetEncoding("shift-jis");

try{
 s = new StreamWriter(Path, true, Encod);
 s.WriteLine(ErrData);
}catch{
}finally{
 s.Close();
}

またこのexeはOSのスケジューリングで直接呼び出す形となっています。
現在はビルド中にエラーが出る状況です。

ご返答となっていますでしょうか?
よろしくお願いします。
NAO
ベテラン
会議室デビュー日: 2003/09/24
投稿数: 51
投稿日時: 2004-02-03 18:33

また、CSファイルは「ソリューション」の「追加」で
「新しいプロジェクト」を作成し、コンソールアプリケーションの中にあります。
そこでEXEファイルとなっています。

これだとASP.NETで動作してないことになるのでしょうか?
string Path = HttpContext.Current.Server.MapPath(".");
の使用は不可能なのでしょうか?
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-02-03 18:46
>コンソールアプリケーション
どのようなアプリなのかよくわからないのですが

string Path = HttpContext.Current.Server.MapPath(".");
はWebアプリじゃないと使えないと思います。
(URLをサーバのPATHに変更する関数なので)

単純にPath="."で動きませんか?

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-03 19:30
 アセンブリが実行されている(ロードされた、かな?)パスですか?

 Application変数か、AppDomainあたりでとれると思いますよ。
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2004-02-04 07:15
引用:

「新しいプロジェクト」を作成し、コンソールアプリケーションの中にあります。


でいて、なおかつ
引用:

またこのexeはOSのスケジューリングで直接呼び出す形となっています。


の時点で「これのどこに一体ASP.NETが関与しているのやら 」と思わなければ。
ASP.NETはWeb環境(WebフォームとかWebサービスとか)ですよ。
1

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