C# 将主题筛选器应用于邮件查询时出现Office 365 Starter项目错误
我正在使用在上找到的初学者项目 我可以运行项目并检索邮件,但当我修改此方法时C# 将主题筛选器应用于邮件查询时出现Office 365 Starter项目错误,c#,asp.net-mvc,office365api,C#,Asp.net Mvc,Office365api,我正在使用在上找到的初学者项目 我可以运行项目并检索邮件,但当我修改此方法时 internal async Task<List<model.MailItem>> GetEmailMessages(int pageNo, int pageSize) 我得到这个错误 AdalException当您拥有可能导致身份验证错误的过时O365访问令牌,或者试图访问您无权访问的资源时,会引发此异常 我已经启动并重新启动了这个项目好几次。如果我删除where子句,它将再次起作用。如果我
internal async Task<List<model.MailItem>> GetEmailMessages(int pageNo, int pageSize)
我得到这个错误
AdalException当您拥有可能导致身份验证错误的过时O365访问令牌,或者试图访问您无权访问的资源时,会引发此异常
我已经启动并重新启动了这个项目好几次。如果我删除where子句,它将再次起作用。如果我重新添加where子句,它将再次失败。通过执行where和orderby,您将尝试执行复合查询
GET https://outlook.office365.com/api/v1.0/Me/Folders('Inbox')/Messages?$filter=Subject eq 'Test'&$orderby=DateTimeReceived desc&$skip=0&$top=10
1.0版outlook server RESTful API不支持此类复合筛选器。它认为这是一个“低效过滤器”,通过给出这样的错误信息,
“此操作的限制或排序顺序太复杂”
您可以通过在客户端进行排序来解决这个问题,可能会减少网络流量,如下所示
var mailResults = await (from i in outlookServicesClient.Me.Folders.GetById("Inbox").Messages
where i.Subject == "test"
select i).Skip((pageNo - 1) * pageSize).Take(pageSize).ExecuteAsync();
var mailMessages = mailResults.CurrentPage.OrderByDescending(i=>i.DateTimeReceived);
var mailResults = await (from i in outlookServicesClient.Me.Folders.GetById("Inbox").Messages
where i.Subject == "test"
select i).Skip((pageNo - 1) * pageSize).Take(pageSize).ExecuteAsync();
var mailMessages = mailResults.CurrentPage.OrderByDescending(i=>i.DateTimeReceived);