【问题标题】:Access to the path (under web application) is denied访问路径(在 Web 应用程序下)被拒绝
【发布时间】:2015-01-16 10:15:20
【问题描述】:

为了简化问题:

我在serverABC (\\serverABC\Equipment*) 上部署了一个名为Equipment 的Web 应用程序

用户将通过函数在应用程序\\serverABC\Equipment\Folder1\...\File1.xls的源路径下复制一个文件:

System.IO.File.Copy ( strSourceFile, strDestFile, true );

strSourceFile ="\\\serverABC\Equipment\Folder1\...\File1.xls"

在文件夹\\serverABC\Equipment\Folder1properties -> Security 中,我为Network Service 分配了读写权限,这是Web 应用程序的应用程序池标识。

然后我在使用网络时遇到了这个错误:

拒绝访问路径“\\serverABC\Equipment\Folder1...\File1.xls”。

我不知道有什么问题。

【问题讨论】:

  • 我相信您需要在 "~/Folder1/..." 上使用 Server.MapPath 并使用 本地路径 而不是 UNC 路径才能用于应用程序池身份才能访问目录。还值得仔细检查它实际上是网络服务,而不是您需要为其添加权限的“IIS AppPool/ yourapplicationpool ”。这取决于您的应用程序池设置和 IIS 版本。
  • 看来是UNC路径格式的问题,需要共享这个文件夹...

标签: c# asp.net .net


【解决方案1】:

您不需要使用服务器名称,因为它在同一个服务器中。

由于您想保存到应用程序中的目录,请使用:

string path = Server.MapPath("Folder1");

然后将其与您的文件名连接并在System.IO.File.Copy 中使用。

【讨论】:

  • 对于连接,不要手动进行,只需使用 Path.Combine(folderPath, fileName) ;-) 会省去一些麻烦...
  • @Ethenyl ...因为我们永远不会记得我们是否已经有 \ 或 / 那里。哈哈哈。这是必须的。
  • 感谢您的建议。只是出于好奇,我想知道如果我想保持路径不变该怎么办。我是否需要将 Folder1 共享到网络服务(尽管它们在同一台服务器上)?
  • @Lucius 实际上我不知道您使用的这种方法是否适用于网络路径。也许您应该先尝试使用控制台应用程序。
猜你喜欢
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多