繁体   English   中英

如何使用 CSOM 检索 SharePoint 共享链接

[英]How to retrieve SharePoint Share Links using CSOM

我目前正在开发一个程序,它将所选文件上传到 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

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

我不想要第一个链接,因为只有我域内的人才能使用它访问文件/文件夹。 第二个链接允许任何被授予访问权限(通过 email 地址)的人访问文件/文件夹。

我目前正在使用此处的代码检索第一个链接: 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

我在上面找到的所有示例都导致错误的链接。

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

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

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

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);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM