【问题标题】:When using Directory.GetFiles(…) , I get exception "Access to the path is denied"使用 Directory.GetFiles(...) 时,出现异常“拒绝访问路径”
【发布时间】:2011-12-09 06:03:20
【问题描述】:

当我使用控制台应用程序项目运行此代码时,它运行良好,但是当我在 webpart 中运行它时,它会引发异常“访问路径被拒绝”。我想从我的共享点站点访问匿名用户的目录信息。

我为“Everyone”、“ANONYMOUS LOGON”、“IIS_IUSRS”授予完全访问权限(读/写)“wwwroot”文件夹

string VideosPath = @"\\10.2.10.2\inetpub\wwwroot\Videos";
string[] fileDirectories= 
  System.IO.Directory.GetDirectories(VideosPath, "*", SearchOption.AllDirectories);

感谢大家,我使用委托解决了问题

     SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    using (SPSite site = new SPSite(SPContext.Current.Site.Url))
                    {
                        using (SPWeb currentWeb = site.OpenWeb(SPContext.Current.Web.ID))
                        {
string[] fileDirectories= 
      System.IO.Directory.GetDirectories(VideosPath, "*", SearchOption.AllDirectories);

                         }
                    }
                }
              );

【问题讨论】:

  • 您确定的意思是“\10.2.10.2\”而不是“\\\\10.2.10.2\”吗?
  • 不,我的意思是“\\10.2.10.2\..”
  • 此路径是相对于您的站点、您的应用还是物理驱动器?
  • 也许这会有所帮助 >stackoverflow.com/questions/4986293/…
  • 我很清楚他正在尝试访问网络共享,但包含的代码缺少 \。因此,我问这个问题很可能会给他答案。然而,它看起来更像是复制粘贴错误而不是代码中的问题,所以在这种情况下,添加另一个斜杠不是答案。 (是的,我用“尝试添加斜线”作为问题的措辞——我显然是在暗示这就是答案)。例如。 “为什么这不能编译?:if (1 + 1 = 2) .. “你的意思是if (1 + 1 == 2)?”是一个有效的答案:)

标签: c# sharepoint-2010


【解决方案1】:

您的@"\\10.2.10.2\... 路径将引用当前驱动器 的根目录,这是不应该的。

你需要:

string VideosPath = Server.MapPath("~/10.2.10.2/..."); 
...

~/ 是您的应用程序的根,而 / 将是“站点”的根

【讨论】:

  • 您可能想澄清一下:指定网络共享与“当前驱动器”无关。 \\10.2.10.2\ 表示网络共享,因此 ~/10.2.10.2/ 不是预期的
  • 我在服务器中有一个共享点站点,我正在尝试从我的服务器访问另一台服务器 (/10.2.10.2/) ,我的代码在我的服务器上运行,它应该连接另一台服务器,它应该拍摄视频文件。
【解决方案2】:

网络服务器的匿名账户不是远程机器上的匿名账户。

要使其正常工作,请在两台机器上创建具有相同名称和密码的新帐户,然后让网站的应用程序池在此帐户下运行。也许“只”使用这个帐户运行 IIS 就足够了,所以先试试吧。

这样,授予该帐户对该文件夹及其所有父文件夹的权限。

【讨论】:

    猜你喜欢
    • 2020-12-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多