4

手动我已将网络驱动器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 名称。无论用户输入文件的名称。

4

6 回答 6

14

获取此代码: 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");
于 2013-12-10T11:29:14.560 回答
3

您已将此帖子标记为 asp.net 和 asp-classic。从您的代码示例中,我猜 asp-classic 不适用。

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

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

于 2012-05-24T11:53:25.723 回答
2

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

于 2012-05-24T11:47:33.080 回答
1

身份冒充对我有用

......

 <system.web>
<identity impersonate="true" userName="yourdomain\yourusername" 
    password="yourpassword" />
......
......
于 2013-01-29T15:24:44.543 回答
0

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

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

于 2012-05-24T11:45:10.940 回答
0

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

于 2012-05-24T11:56:05.520 回答