我遇到需要使用C#访问网络驱动器的情况,但在运行我的应用程序的每台计算机上,驱动器号可能会有所不同。
例如: 在我的开发PC上,网络驱动器号看起来像这样 的 M:\工程\ 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
我总是遇到异常 “未处理的类型' System.IO.IOException'发生在mscorlib.dll中 其他信息:找不到网络名称。“
对于字符串DatabasetoUsePath,我还尝试了 @" \\ engineering \ testerdata \ configfile.txt&#34 ;; 和 " \工程\ testerdata \ configfile.txt&#34 ;; 哪个甚至都不会编译,我收到消息“无法识别的转义序列”。
我认为这很容易实现,因为我在C:驱动器上读取本地文件时做了类似的事情,但是从网络驱动器读取结果比我想象的要困难!我究竟做错了什么?提前谢谢!
答案 0 :(得分:2)
您需要使用UNC路径:\\fqdn\sharename\PathToFile
答案 1 :(得分:1)
看看映射并使用规范文件(我认为它被称为那样)而不是名称 例如,我有一个映射到I的驱动器,但它确实是
\\DC1\applications\
通常我会通过I: 您可以从资源管理器中获取此信息,它确实在我的情况下显示 我:\真的是\ DC1 \ applications
这意味着如果有这样的事情:我将在工程设计中将其作为\ DC1 \ applications \ engineering
进行处理要查看映射,请单击“开始”按钮,然后单击“打开Windows资源管理器”。映射显示在计算机节点的左侧。假设你已经有了那些映射。
在此示例中,请参阅Y驱动器映射到
\\Storage\public
C盘是本地盘,D是E,E是DVD,F也是驱动器......