在C#中简单访问网络驱动器

Simple access to network drive in C#

我遇到这样一种情况,我需要在 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: 驱动器上的本地文件做了非常相似的事情,我认为这很容易实现,但是从网络驱动器读取比我想象的要困难!我究竟做错了什么?提前致谢!

查看映射并使用规范文件(我认为它是这样称呼的)名称 例如我有一个映射到我的驱动器,但它确实是

\DC1\applications\

通常我会通过 I:\ 您可以从资源管理器中获取此信息,在我的案例中它确实表明 我:\真的是\DC1\applications

这意味着如果有像 I:\engineering 这样的东西,你会把它写成 \DC1\applications\engineering

要查看映射,请右键单击开始按钮,然后单击打开 windows 资源管理器。映射显示在计算机节点下的左侧。假设您已经有了这些映射。

在此示例中,Y 驱动器映射到

\Storage\public

C盘是本地盘,D也是,E是DVD,F也是盘,...

您需要使用 UNC 路径:\fqdn\sharename\PathToFile