从 .url 快捷方式文件中获取快捷方式 link

Get the shortcut link from a .url shortcut file

我正在使用此 URL:

查询图表 api
https://graph.microsoft.com/v1.0/sites/{siteID}/drives/{driveID}/root/children

这给了我网络URL

"https://MY DOMAIN.sharepoint.com/sites/{SITE}/{FILENAME}.url

有什么方法可以获取快捷方式项指向的值,而不是下载 .url 文件?

我认为 Get url address from url file 回答了我一半的问题,但是,我无法将 url 的内容作为 File 类型的对象来读取它。

我正在获取每个快速链接并通过 ReadAsStringAsync

将它们添加到列表中
public static async Task<List<QuickLinkViewModel>> GetQuickLinksAsync (dynamic quicklinksJson)
    {
        List<QuickLinkViewModel> quickLinks = new List<QuickLinkViewModel>();


        var quickLink = quicklinksJson.value;
        string title;

        HttpClient client = new HttpClient();
        byte[] reply;

        foreach (var q in quickLink)
        {
            reply = await client.GetByteArrayAsync(q.webUrl);


            title = q.name;
            title = System.IO.Path.GetFileNameWithoutExtension(title);
            quickLinks.Add(new QuickLinkViewModel
            {
                Title = title,
                webUrl = q.webUrl
            });
        }

        return quickLinks;
    }

当我 运行 出现此错误时:

The best overloaded method match for 'System.Net.Http.HttpClient.GetByteArrayAsync(string)' has some invalid arguments

.url 文件不支持在 SharePoint 中预览。所以 Microsoft Graph 的查询结果中的 webUrl 格式与其他文件不同。可以通过这个 webUrl 预览其他文件。 .url 文件将通过 webUrl 直接下载。

下载后用编辑工具打开可以看到快捷项指向的值

.url文件的内容:

[InternetShortcut]
URL={the value that the shortcut item points to}

更新:

如果您想在代码中获取.url文件的内容,您需要调用另一个Graph端点:GET /drives/{drive-id}/items/{item-id}/content。请参阅参考资料 here。使用client.DownloadString阅读C#中的内容

这里有一个简单的例子(请注意,我这里没有实现授权过程,只是为了方便放Authorization herder):