从网络位置读取文件

时间:2012-05-21 12:02:59

标签: c# asp.net .net network-share

我在网络驱动器上共享的文件夹中有一堆文件。我正在尝试将这些文件存入我的代码。但它给出了一个错误:

  

System.IO.DirectoryNotFoundException未被用户代码

处理
Fname = txtwbs.Text;
DirectoryInfo objDir = new DirectoryInfo("Y:\\");
_xmlpath = objDir + "\\" + Fname + "\\" + Fname + ".xml";
if (File.Exists(_xmlpath ))
{
    reader(_xmlpath);
}

我也用过:

file = fopen("\\\\10.0.2.20\\smartjobs\\Eto\\"+Fname);   

我可以从我的本地PC上读取文件但它仅为网络位置提供例外。请告诉我如何从网络共享位置读取文件。

此外,我如何将文件夹的树视图转换为Asp.net Web应用程序。

目录结构就像那样

\\10.0.2.20\Smartjobs\Eto\

这是父目录它是具有XML文档的文件夹的编号。

3 个答案:

答案 0 :(得分:1)

在asp.net中,您无法直接访问网络文件夹,因为asp.net在匿名用户帐户下运行,该帐户无权访问该位置。

您可以在该共享位置为“所有人”授予权限,并查看其是否正常工作。但是这不可取。

Alternativly在访问网络位置时,您可能必须在asp.net代码中进行模拟。您必须与有权访问该共享位置的用户进行实施。

答案 1 :(得分:1)

您可能已将共享目录映射为用户,但是您忘记了asp.net在池的帐户下运行,并且您没有将y:\连接到共享目录。

接下来认为你可以做的是直接尝试通过网络共享名称进行连接,例如:\\SharedCom\fulldir\file.xml

答案 2 :(得分:0)

您需要指定ASP.net页面作为具有该文件访问权限的特定用户运行。然后,您需要在impersonation文件中启用web.config,以便ASP.net实际以user的形式访问该文件。

  

您的Y驱动器是映射的网络驱动器。您需要使用网络   url eg \\server\Smartjobs\Eto\xyz.xml

您可以在name上指定文件的network,就像在其他地方一样:

Dim myStream As IO.FileStream = IO.File.Open("\\myserver\myshare\myfile", IO.FileMode.Open)
Dim myBytes As Byte()
myStream.Read(myBytes, 0, numberOfBytesToRead)

更多参考:
Unable to List File or Directory Contents on ASP.NET Page using Shared Drive
Using file on network via IIS