【发布时间】:2015-04-23 08:27:13
【问题描述】:
我有一种情况,我需要使用 C# 访问网络驱动器,但驱动器号在运行我的应用程序的每台机器上可能不同。
例如: 在我的开发 PC 上,网络驱动器号如下所示 M:\engineering\testerdata\configfile.txt
但在生产测试台机器上,每台机器上的驱动器号可能会有所不同,具体取决于我们的 IT 部门如何设置它们。在这些情况下,可能有些机器带有 G:\engineering\testerdata\configfile.txt,而其他机器带有 L:\engineering\testerdata\configfile .txt。无论如何,数据将位于文件夹 \engineering\testerdata\configfile.txt 下的网络驱动器上。
我正在尝试编写一个方法来访问此网络文件夹以读取配置文件。我不必担心凭据,因为它们已经在每台机器上设置。此外,我不想将其设为本地工作目录,因为我必须手动更改大约 20 台 PC 上的设置。这是我的方法的样子。
public string DatabaseSelector()
{
//This method determines which database to use when reading configuration data. If the file does not exist, default to AX.
string DataBaseToUse = "AX"; //This is the default database
string DatabasetoUsePath = "\\\\engineering\\testerdata\\configfile.txt";
StreamReader DBtoUseReader = new StreamReader(DatabasetoUsePath);
if (File.Exists(DatabasetoUsePath)) // if file exists, read file to determine which database to use.
{
DataBaseToUse = DBtoUseReader.ReadToEnd(); // Set to what's in the file. Will be AX or MACPAC
if (DataBaseToUse == "MACPAC")
return DataBaseToUse; //Done - using MACPAC
else
return "AX"; // regardless of anything else, use AX
}
return DataBaseToUse; // if file doesn't exist, us AX.
} // end DatabaseSelector
我总是得到一个异常“在 mscorlib.dll 中发生了“System.IO.IOException”类型的未处理异常
附加信息:找不到网络名称。”
对于字符串 DatabasetoUsePath 我也试过 @"\\engineering\testerdata\configfile.txt"; 和 "\engineering\testerdata\configfile.txt"; 这甚至无法编译,我收到消息“无法识别的转义序列”。
考虑到我在 C: 驱动器上读取本地文件时做了非常相似的操作,我认为这很容易实现,但是从网络驱动器读取结果比我想象的要困难!我究竟做错了什么?提前致谢!
【问题讨论】:
-
好吧,
M:\engineering\testerdata\configfile.txt指的是engineering文件夹下的任何M:映射到的文件夹。在\\engineering\testerdata\configfile.txt的通用命名约定 (UNC) 示例中,我认为它正在寻找一个名为 engineering 的主机,我猜它不存在。M:到底映射到什么?您应该能够只使用 UNC 而非未映射的驱动器 - 绕过M:和G: -
M: 和 G: 代表不同机器上的盘符。我正在尝试使用驱动器号,因为我不知道它们是什么。我试图获取的数据位于 \\engineering\testerdata 文件夹中。
-
嗯我很困惑 - “在我的开发 PC 上,网络驱动器号看起来像这样 M:\engineering\testerdata\configfile.txt” - 不要@ 987654329@ 和
G:代表网络映射驱动器?只需使用 UNC。可悲的是我不明白问题出在哪里 -
好的。我想我需要阅读并理解 UNC 的含义。这是我第一次听说它。谢谢。
-
为什么这个标签是 ibm-midrange?
标签: c# sql disk network-share