9

c:\Program Files\My Serviceディレクトリにインストールされる Windows サービスを作成しました。実行可能ファイルとともに、同じディレクトリにインストールされる XML ファイルがあります。この XML ファイルは、ユーザー定義情報を取得するためにサービスによって使用されます。

サービスのコードでは、実行可能ファイルに対してローカルであるかのようにファイルを読み取ります..例:

DataSet ds = new DataSet();
ds.ReadXml("Foo.xml");

ただし、サービスを実行すると、サービスは次のような例外をスローします。

ファイル 'C:\Windows\system32\Foo.xml' が見つかりませんでした

実行可能ファイルは にあるので、c:\Program Files\My ServiceWindows サービスが XML ファイルをc:\Program Files\My Service\Foo.xml. 明らかに、そうではありません。

サービス実行可能ファイルが存在するのと同じ場所にある Foo.xml ファイルを (相対的に) 検索するようにサービスを強制するにはどうすればよいですか?

4

3 に答える 3

15

これを使って:

System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Foo.xml");
于 2012-06-26T18:46:16.410 に答える
0

Windowsサービスの作業ディレクトリはC:\ Windows\System32です。

xmlファイルを期待どおりに読み取るには、次のようにする必要があります

DataSet ds = new DataSet(); 
ds.ReadXml(Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, "Foo.xml")); 
于 2012-06-26T18:47:13.520 に答える
0

これにより、必要なものが得られます

 DataSet ds = new DataSet();
 ds.ReadXml(System.IO.Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location,"Foo.xml");
于 2012-06-26T18:44:01.360 に答える