【问题标题】:Reading File From Network Location从网络位置读取文件
【发布时间】:2012-05-21 12:02:58
【问题描述】:

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

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 文档的文件夹的编号。

【问题讨论】:

  • 您可以从其他位置(例如资源管理器窗口)查看文件吗?也许您的机器没有读取权限。
  • 您的应用程序池以什么身份运行?该身份很可能无法访问网络驱动器。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      您的 Y 驱动器是映射的网络驱动器。你需要使用网络 网址例如\\server\Smartjobs\Eto\xyz.xml

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

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-04
        • 1970-01-01
        • 2010-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多