私は現在、XML メッセージを取得してアーカイブし、さらに処理する Web サービスに取り組んでいます。アーカイブ フォルダーは、Web.config から読み取られます。アーカイブ方法はこんな感じ
private void Archive(System.Xml.XmlDocument xmlDocument)
{
try
{
string directory = System.Configuration.ConfigurationManager.AppSettings.Get("ArchivePath");
ParseMessage(xmlDocument);
directory = string.Format(@"{0}\{1}\{2}", directory, _senderService, DateTime.Now.ToString("MMMyyyy"));
System.IO.Directory.CreateDirectory(directory);
string Id = _messageID;
string senderService = _senderService;
xmlDocument.Save(directory + @"\" + DateTime.Now.ToString("yyyyMMdd_") + Id + "_" + System.Guid.NewGuid().ToString().Substring(0, 13) + ".xml");
}
取得するパス構造は C:\Program Files\Subfolder\Subfolder です。開発、QA、UAT、および PRD 環境では、すべて正常に動作します。しかし、Web サービスをインストールする必要がある別のマシン (残念ながらデバッグできません) では、ディレクトリ文字列は「C:Files」です。念のため、別のマシンで .NET のバージョンを再確認しました (おそらく、文字列の前の @ の使用はバージョンに依存していると思いました)。すべてのマシンが 2.0.50727 を使用します。
誰もこの問題を認識していますか?
前もって感謝します!
編集: ディレクトリ変数の前に @ が表示され、私が尋ねた質問に関して混乱が生じました。それは@についてではありませんでした(実際、そこにあるはずはありませんでした。私はそれを削除しました)。
私の質問 (言い換え) は、@"c:\folder\subfolder" のように、引用符で囲まれた文字列の前に @ を配置すると、バックスラッシュがエスケープ文字として解釈されないことが保証されますよね? あるマシンでは動作するが、別のマシンでは動作しない原因は何ですか? (ちなみにPath.Combineを使用するという回答には同意します。この一貫性のない動作の原因は何なのか知りたいです)