【问题标题】:How can I get a document URL suitable for use by the .NET Sharepoint API?如何获取适合 .NET Sharepoint API 使用的文档 URL?
【发布时间】:2022-02-08 04:59:33
【问题描述】:

我正在编辑一个托管在 Sharepoint 上的 Excel 文档,该文档的网址如下:

https://{mysite}.sharepoint.com/:x:/g/personal/{name}/ETxQX66YJ...XOmOv1SYLDA?rtime=mqEhNZwV10g

我希望能够使用如下代码以编程方式阅读此内容:

Using clientContext = New ClientContext("https://{mysite}.sharepoint.com/")
  clientContext.Credentials = ...

  Dim file = clientContext.Web.GetFileByServerRelativeUrl("/:x:/g/personal/{name}/ETxQX66YJ...XOmOv1SYLDA?rtime=mqEhNZwV10g")

  Dim data = file.OpenBinaryStream()
  clientContext.Load(file)
  clientContext.ExecuteQuery()
  ...
End Using

连接正常,但 ExecuteQuery 失败:

Microsoft.SharePoint.Client.ServerException: '文件或文件夹名称包含不允许的字符。请使用其他名称。'

我认为这是因为相对 url 中的冒号,并且我应该使用另一个 url 端点来访问此文件,但我不知道它是什么。

正确的格式是什么,否则我如何确定它是什么?

【问题讨论】:

    标签: sharepoint sharepoint-api


    【解决方案1】:

    不确定您使用的是哪个版本的 SP。假设 SP Online,那么您是否尝试过从文件的复制或获取链接 选项中获取链接?根据记忆,我相信您需要尝试 restricted 选项。

    【讨论】:

      【解决方案2】:

      您使用的 url 似乎是 SharePoint Online 中的共享链接,对于 GetFileByServerRelativeUrl 函数,应传递文件服务器相对 url。

      例如完整的文件url是:

      https://tenant.sharepoint.com/sites/dev/Shared%20Documents/test33.jpg

      那么文件相对url就是:

      /sites/dev/Shared%20Documents/test33.jpg

        Dim file = clientContext.Web.GetFileByServerRelativeUrl("/sites/dev/Shared%20Documents/test33.jpg")
      

      【讨论】:

      • 听起来不错,但我如何找到该服务器的相对网址?
      • 您可以参考上面的演示,文件相对 url 只需删除您的租户 url 并以站点相对 url /sites/dev/Libraryname/filename 开头
      【解决方案3】:

      您可以尝试使用GetFileByUrl(新)而不是GetFileByServerRelativeUrl,从像您这样的可共享链接中获取文件。它应该解决此类链接。

      clientContext.Web.GetFileByUrl("https://{mysite}.sharepoint.com/:x:/g/personal/{name}/ETxQX66YJ...XOmOv1SYLDA?rtime=mqEhNZwV10g")
      

      【讨论】:

        猜你喜欢
        • 2011-09-28
        • 1970-01-01
        • 2014-01-17
        • 2015-12-30
        • 1970-01-01
        • 2021-12-08
        • 1970-01-01
        • 2014-08-13
        • 2012-09-21
        相关资源
        最近更新 更多