>手动,我已经将网络驱动器 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 名称。无论用户将输入文件名。
获取此代码: 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(@"\serverpath", "Z:", "myuser", "mypwd");
}
然后像普通网络驱动器一样使用,如下所示:
File.ReadAllText(@"Z:myfile.txt");
你把这篇文章标记为 asp.net 和asp-classic。 从您的代码示例中,我猜 asp-classic 不适用。
如果您在 ASP.Net 中运行,系统将不知道您创建的映射驱动器。 应改用 UNC 路径。 如果未使用 Windows 身份验证运行站点,则还需要模拟有权访问共享的人员,因为匿名用户很可能会收到"拒绝访问"错误。
最后,我不认为你需要 DirectoryInfo 调用 - 使用 Path.Combine()
理想情况下,应使用 UNC 路径访问文件。 \serversharepathtofile
身份模拟为我做了这个技巧
......
<system.web>
<identity impersonate="true" userName="yourdomainyourusername"
password="yourpassword" />
......
......
使用此 API。 http://www.codeproject.com/Articles/6847/Map-Network-Drive-API
这是我设法在代码中做到这一点的唯一方法。只需修改类,使其适合您的项目。
使用 UNC 路径而不是网络驱动器,并确保运行应用程序的用户有权访问文件夹及其内容。"找不到文件"可能意味着权限错误或路径错误。