如何使用 C# 代码访问共享网络驱动器文件

本文关键字:网络 驱动器 文件 访问共享 代码 何使用 | 更新日期: 2023-09-27 18:35:24

>手动,我已经将网络驱动器 Y:// 映射到我的系统。驱动器具有曼尼文件夹,每个文件夹都包含单个XMl文件,具有与文件夹相同。

在这里,我正在尝试从网络位置读取xml文件。但它给出了 找不到异常目录 .下面我正在使用的代码。

                 Fname = txtwbs.Text;           
                 DirectoryInfo objDir = new DirectoryInfo("Y:''");    
                 ''Y:''
                 protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
                 {
                 _xmlpath = objDir + "''" + Fname + "''" + Fname + ".xml";           
                 if (File.Exists(_xmlpath ))           
                  {          
                   reader(_xmlpath);          
                  } 
                 }

这里 fname 是文件夹名称也是 xml 名称。无论用户将输入文件名。

如何使用 C# 代码访问共享网络驱动器文件

获取此代码: http://pastebin.com/RZnydz4Z

然后在你的global.asax的Application_Start上放这个:

protected void Application_Start(object sender, EventArgs e) 
{
    Utilities.Network.NetworkDrive nd = new Utilities.Network.NetworkDrive();        
    nd.MapNetworkDrive(@"''server'path", "Z:", "myuser", "mypwd");
}

然后像普通网络驱动器一样使用,如下所示:

File.ReadAllText(@"Z:'myfile.txt");

你把这篇文章标记为 asp.net 和asp-classic。 从您的代码示例中,我猜 asp-classic 不适用。

如果您在 ASP.Net 中运行,系统将不知道您创建的映射驱动器。 应改用 UNC 路径。 如果未使用 Windows 身份验证运行站点,则还需要模拟有权访问共享的人员,因为匿名用户很可能会收到"拒绝访问"错误。

最后,我不认为你需要 DirectoryInfo 调用 - 使用 Path.Combine()

理想情况下,应使用 UNC 路径访问文件。 ''server'share'path'to'file

身份模拟为我做了这个技巧

......
 <system.web>
<identity impersonate="true" userName="yourdomain'yourusername" 
    password="yourpassword" />
......
......

使用此 API。 http://www.codeproject.com/Articles/6847/Map-Network-Drive-API

这是我设法在代码中做到这一点的唯一方法。只需修改类,使其适合您的项目。

使用 UNC 路径而不是网络驱动器,并确保运行应用程序的用户有权访问文件夹及其内容。"找不到文件"可能意味着权限错误或路径错误。