C# - 从配置文件中检索文件路径 - @ 并不神奇

标签 c# path backslash

我目前正在开发一种 Web 服务,该服务可检索 XML 消息、将其存档然后进一步处理它。存档文件夹是从 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 的答案。我只是好奇是什么导致了这种不一致的行为)

最佳答案

您可以尝试使用 Path.Combine()而不是 String.Format()。不错example is here .

关于C# - 从配置文件中检索文件路径 - @ 并不神奇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2722352/

相关文章:

macos - 找不到 Bash 命令——$PATH 已损坏

Javascript 和反斜杠替换

php - MySQL PHP Escape String '\' - 为什么它没有用反斜杠保存在数据库中?

c# - 向字符串添加反斜杠

c# - 按值传递结构

c# - 从服务器端的 GridTemplateColumn 中检索值 (Telerik RadGrid)

c# - 在 C# 中生成 List<List<KeyPairValue<string, string>>> 子集的排列

java - Windows %path% 环境变量中出现奇怪的空格

c# - 阅读网站的编码问题,三种不同的编码

python - python 虚拟环境应该是独立的吗?如果不是,是否存在跨环境混淆的危险?