在ASP.NET WebForms中通过Microsoft Graph获取日历事件的问题
问题描述
在ASP.NET WebForms中通过Microsoft Graph获取Office 365用户信息正常,但获取日历事件时遇到问题:无论选择哪个用户,仅能返回10条事件,怀疑与ODataNextLink有关。需要设置返回结果数量为100,或指定获取某一天的事件(实际仅需单日数据),询问是否有相关配置参数。
解决方案
要实现获取指定用户单日日历事件并控制返回数量,可通过CalendarView接口的查询参数配置,以下是完整实现代码:
var ewsScopes = new string[] { "https://graph.microsoft.com/.default" }; var clientSecCred = new ClientSecretCredential(TenantID1, ClientID1, ClientSecret1); var GraphClient1 = new GraphServiceClient(clientSecCred, ewsScopes); var user2 = await GraphClient1.Users[UserToGet].CalendarView.GetAsync( requestConfiguration => { // 设置查询起始日期(当日零点) requestConfiguration.QueryParameters.StartDateTime = DateToUse.ToString("yyyy-MM-dd"); // 设置查询结束日期(当日23点) requestConfiguration.QueryParameters.EndDateTime = DateToUse.AddHours(23).ToString("yyyy-MM-dd"); // 设置最大返回条目数为100 requestConfiguration.QueryParameters.Top = 100; } ); foreach (var ev1 in user2.Value) { lblDates.Text = lblDates.Text + "<br/>" + ev1.Start.DateTime + " " + ev1.Subject; }
关键参数说明
- Top:控制单次请求返回的最大条目数,最大值可设为999,此处设置为100满足需求
- StartDateTime/EndDateTime:通过
CalendarView指定时间范围,设置为当日0点到23点即可实现单日事件查询 - 若单日事件超过100条,可通过
user2.ODataNextLink发起分页请求,获取剩余数据
内容的提问来源于stack exchange,提问作者user1944720
相关产品推荐
相关产品推荐

