- PR -

XmlDocument.Load で ルートディレクトリにあるXMLを参照できない。

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2004/08/26
投稿数: 34
投稿日時: 2008-12-05 12:19
.NET2003 C# でコンソールアプリケーションを開発しています。


string path = @".\\test.xml";
XmlDocument xml = new XmlDocument();
xml.Load(path);

上記処理で、
exeと同じディレクトリにある、test.xmlを参照したいのですが、
ファイル "C:\\WINDOWS\\system32\\test.xml" が見つかりませんでした。
が発生してしまいます。
開発環境では正しく動作したのですが、
本番環境でエラーになってしまいました。

対処方法のご教授よろしくお願いします。

なかむら
ベテラン
会議室デビュー日: 2008/11/11
投稿数: 67
お住まい・勤務地: 福岡
投稿日時: 2008-12-05 12:33
Application.StartupPath や AppDomain.BaseDirectory を使って exe が置かれているディレクトリの絶対パスを取得し、それを元にファイルパスを作成すればいいと思います。
_________________
Nakamura Blog
未記入
常連さん
会議室デビュー日: 2004/08/26
投稿数: 34
投稿日時: 2008-12-05 13:01
なかむら様

回答ありがとうございました。
絶対パス指定で対応できました。

しかし、何故、ルートディレクトリが参照出来ないのでしょうか・・・。
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-12-05 13:20
相対パスで見たら system32 を見ている事が答だと思いますが・・・。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2008-12-05 13:56
引用:

しかし、何故、ルートディレクトリが参照出来ないのでしょうか・・・。



「ルートディレクトリ」じゃなくて「カレントディレクトリ」でしょ?

常に「カレントディレクトリ=実行ファイルの置いてある場所」である保証は全くありません。

おそらく、Windows サービスから起動する、あるいは Windows サービスとして起動する、といったことをしてるんだと思いますが、そうった場合、プロセスのカレントディレクトリは Windows のシステムディレクトリに設定されることがあります。
1

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