3

我最近构建了一个程序,它解析来自\some_server\c$\directory\file.xls的远程文件,它在我的本地机器上工作正常,就像一个普通的 aspx 页面一样。

然后我将程序放入我的 VM SharePoint 服务器上的 Web 部件表单中,我收到此错误:拒绝访问路径 '\some_server\c$\directory\file.xls'。

该文件已共享给Domain\Authenticated Users,所以我不确定为什么它会被拒绝?我的 SharePoint 是否有可能尝试使用本地或网络服务帐户调用它?我怎样才能让它阅读?谢谢你。

4

7 回答 7

3

Salamander 是对的,SharePoint 运行时并不信任这样做。

将 SharePoint 的 web.config 中的信任级别从 WSS_Medium 更改为 Full 是快速的解决方案,但存在安全隐患。

于 2008-10-15T11:06:47.777 回答
3

请注意,您可能会遇到经典的 NTLM Double-Hop 问题。您可以对前端进行身份验证,但由于前端没有您的密码,因此它无法对另一台服务器上的资源进行身份验证。

以提升的权限运行并根据应用程序池身份设置权限可能是推动您前进的一种方式。

于 2008-10-23T20:00:50.033 回答
2

我认为您将需要 RunWithElevatedPrivileges 这将使 SharePoint 使用应用程序池帐户。另请记住,您必须确保应用程序池帐户有权访问该网络共享。避免使用完全信任。

于 2008-10-16T20:12:58.297 回答
1

您能否进一步解释一下设置信任级别对您有什么作用?

我认为,如果您的应用程序池身份是域帐户,您可以使用 SPSecurity.RunWithElevatedPrivileges 使用应用程序池凭据来访问文件。或者,使用模拟显式传递另一个帐户的凭据。

于 2008-10-15T12:39:44.110 回答
0

SharePoint 通常在单独的应用程序池中运行。请检查此应用程序池的身份。

于 2008-10-15T09:31:24.850 回答
0

我认为要能够访问网络路径,您的代码必须以完全信任的方式运行,而我认为 SharePoint 不会。

于 2008-10-15T10:55:56.503 回答
0

为什么不将文件存储在 SharePoint 中以便更好地访问它?将其放入隐藏库并使用 SPSecurity.RunWithElevatedPrivledges 访问它。

RWEP 有一些警告。从 SPContext(即 SPContext.Current.Site)获得的对 SPSite 和 SPWeb 的任何引用仍将在登录用户的权限下运行。您必须在 RWEP 委托中明确创建一个引用。

SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite site = new SPSite(SPContext.Current.Site.Url)) { using (SPWeb web = site.OpenWeb()) { //... 使用 SPWeb } } } );

如果您需要从外部共享点访问文件以使用现有进程对其进行更新,您可以使用可用于所有 SPDocumentLibrary 的文件共享路径,但转到操作 --> 使用 Windows 资源管理器打开以获取网络路径。

于 2008-10-17T20:57:22.233 回答