Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将主题筛选器应用于邮件查询时出现Office 365 Starter项目错误_C#_Asp.net Mvc_Office365api - Fatal编程技术网

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