执行GetDirectories()时拒绝访问,但Powershell中的Dir工作正常

时间:2013-10-09 14:35:34

标签: sharepoint

我有一个问题,希望有人可以帮助我。

我已经创建了一个自定义操作页面,其中我将扫描远程服务器上的目录以获取一组目录,并在这些目录中搜索一组文件。 但是,当我在生产服务器上执行代码时,我得到一个访问被拒绝的异常。 如果我在我的testserver上使用相同的代码(访问同一个远程服务器),它可以正常工作。

如果我在生产服务器上使用powershell或explorer,我可以毫无问题地访问远程目录和文件。

我在所有场景中使用相同的帐户(如果我打印出Page.User.Identity.Name和SPContext.Current.Web.CurrentUser.LoginName它们是相同的,并且等于我在测试服务器上使用的帐户和从命令行或资源管理器访问远程服务器时我在生产服务器上登录的那个。)

代码如下所示:

string user = SPContext.Current.Web.CurrentUser.LoginName.Remove(0,7);
string user_path = "\\\\srv\\share1\\subdir\\dir\\" + user;

// The line below will raise an exception on the production server.
foreach (string board_path in Directory.GetDirectories(user_path, "Board*")) {
   foreach (string board_file in Directory.GetFiles(board_path, "Board*.xml")) {
   .
   .
   }
}

我无法弄清楚为什么代码在测试服务器上运行而在生产机器上运行。我使用的是SharePoint 2010 Standard。

提前感谢我能得到的任何帮助。

/弗雷德里克

1 个答案:

答案 0 :(得分:0)

使用SPSecurity.RunWithElevatedPrivileges()来解决问题!

/弗雷德里克