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

时间:2019-11-26 19:09:39

标签: c# asp.net-mvc microsoft-graph azure-ad-graph-api

我正在使用以下URL查询图形API:

https://graph.microsoft.com/v1.0/sites/{siteID}/drives/{driveID}/root/children

这为我提供了webURL

"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;
    }

运行此命令时出现错误:

  

最佳匹配的重载方法   'System.Net.Http.HttpClient.GetByteArrayAsync(string)'有一些   无效的参数

1 个答案:

答案 0 :(得分:0)

不支持在SharePoint中预览

.url文件。因此,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牧民):

enter image description here