2

WCF サービスから xml ファイルを読み取りたい。xml ファイルの settings.xml はサービス exe と同じフォルダーにあり、サービスは Windows サービスとしてホストされます。

クライアントがサービスにアクセスすると、サービス exe は system32 フォルダーを参照し、ファイルが見つからないという例外をスローします。

C:\Windows\system32\Settings.xml

これは try catch ブロックにあるコードで、クライアントがキャッチする FaultException がスローされます。

XmlSerializer serializer = new XmlSerializer(_appSettings.GetType());
            StreamReader sr = new StreamReader("Settings.xml", Encoding.UTF8);
            _appSettings = (SpecialityFinishingSettings)serializer.Deserialize(sr);
            sr.Close();

基本的に、xml を読み取って、サービスで使用できるオブジェクトに逆シリアル化しようとしています。

サービス内からこのファイルを読み取るにはどうすればよいですか?

サービスはInstallUtil.exeを使用してインストールされます

4

1 に答える 1

2

問題は、「Settings.xml」がファイルとして見つからないことです。フルパスを指定する必要があります。次のいずれかを実行できます。

  • 絶対パスを使用する
  • 構成ファイルにパスを保存します。このパスは、ファイルを開くフォルダーになります。これは、ファイル名に追加できます。
  • Anand (System.AppDomain.CurrentDomain.BaseDirectory + "Settings.xml";) によって提案されているように、アプリが実行されているパスを取得します。
于 2013-01-21T12:51:59.567 に答える