【问题标题】:How to retrieve SharePoint Share Links using CSOM如何使用 CSOM 检索 SharePoint 共享链接
【发布时间】:2019-09-24 23:22:05
【问题描述】:

我目前正在开发一个程序,它将所选文件上传到 SharePoint 上的特定文件夹(并在必要时自动创建文件夹),并使用 SharePoint CSOM 根据他们的电子邮件向特定用户授予访问权限,但是我无法检索我域之外的人的链接。

例如,使用我当前的代码,我正在检索如下链接:

https://domain.sharepoint.com/:f:/r/sites/TestSite/Shared%20Documents/2019/11157/Test%20Upload?csf=1

但是,我试图检索的链接如下:

https://domain.sharepoint.com/:f:/s/TestSite/EmUDng-KzwxEtHKyJ9Okl0MBlS_z8gxGFl4UUjuGXHmR9w

如果我进入 SharePoint 并手动检索它(程序正确生成链接),我可以检索上面的链接,但这违背了我的程序的目的。该程序应该自动上传和链接检索我公司域内的文件。

我不想要第一个链接,因为只有在我的域中的人才能使用它访问文件/文件夹。第二个链接允许任何获得访问权限(通过电子邮件地址)的人访问文件/文件夹。

我目前正在使用此处的代码检索第一个链接:https://www.c-sharpcorner.com/article/generating-sharing-links-report-and-removing-sharing-links-using-sharepoint-onli/

我还尝试了在 StackExchange 上找到的其他建议,例如:https://sharepoint.stackexchange.com/questions/91451/manage-links-for-shared-files

我发现的上述所有示例都导致错误的链接。

如果目前不清楚,我不是在寻找匿名链接或如何创建共享链接(因为我已经有了这个工作),我在寻找将出现的链接here

【问题讨论】:

    标签: c# sharepoint csom


    【解决方案1】:

    在随机尝试所有方法后,我设法找到了解决方案。你可以做的如下:

    首先,按照我之前的方式创建分享链接:

    SharingResult result = context.Web.ShareDocument(site,
                           email,
                           ExternalSharingDocumentOption.View,
                           false,
                           "Document Shared as test");
    

    然后使用结果变量,获取受邀用户之一的邀请链接,然后对其进行修改以适用于任何用户(事实证明,除了最后的参数之外,所有用户的特定链接都是相同的)

    string link = result.InvitedUsers.FirstOrDefault().
    int index = link.IndexOf("?");
    if (index > 0) link = link.Substring(0, index);
    

    这会产生我正在寻找的正确链接。我确实和微软的一些人谈过这个问题,所以,感谢微软告诉我这是不可能的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 2019-04-12
      • 1970-01-01
      • 2015-05-20
      • 2022-12-22
      • 1970-01-01
      相关资源
      最近更新 更多