【问题标题】:Accessing a remote file with a SharePoint Web Part使用 SharePoint Web 部件访问远程文件
【发布时间】:2010-09-17 06:39:28
【问题描述】:

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

然后我把程序放到web part 在我的 VM SharePoint 服务器和我的表单上 得到这个错误:访问路径 '\some_server\c$\directory\file.xls' 被拒绝。

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

【问题讨论】:

    标签: c# sharepoint web-parts


    【解决方案1】:

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

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

    【讨论】:

    • 我认为这将是我的问题的解决方案。我正在开发一个安全的 Intranet,因此安全性是一个较小的问题。我究竟如何制作完全信任策略文件?有什么例子吗?
    • 完整版(和其他几个)随 Asp.Net 一起提供,因此不需要定义 - 您可以在 web.config 中简单地使用它们。 WSS_* 策略文件与 MOSS/WSS 一起提供 - 它们允许 SharePoint 对象获得所需的访问权限,因此如果您想修改现有策略,请从那里开始。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

            • 我认为这将是我的问题的解决方案。我正在开发一个安全的 Intranet,因此安全性是一个较小的问题。我究竟如何制作完全信任策略文件?有什么例子吗?
            • 将您的网络配置更改为包含此类设置 我自己从来没有尝试过(从来不需要),现在我没有任何访问 WSS 测试服务器的权限。
            【解决方案7】:

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

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

            SPSecurity.RunWithElevatedPrivileges(delegate() { 使用(SPSite 站点 = 新 SPSite(SPContext.Current.Site.Url)) { 使用 (SPWeb web = site.OpenWeb()) { //... 用 SPWeb 做点什么 } } });

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-03-03
              • 1970-01-01
              • 1970-01-01
              • 2011-02-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-05-11
              相关资源
              最近更新 更多