我有这个问题,我现在已经疯了几个小时了。我在Azure中存储了一个表,用于保存用户想要完成的任务。每个任务的状态可以是1,2或3的整数值,分别对应于执行,进行中或完成。我尝试创建三个单独的仪表,告诉用户他们在这三个类别中分别拥有多少任务,但我尝试的所有内容都会导致MobileServiceInvalidOperation
错误,我无法做到似乎弄明白了为什么。
- 编辑 -
我在程序的另一部分遇到了类似的问题,问题证明是权限之一。一旦我包含了我在另一个页面上使用的用户身份验证代码,我在该页面上运行的查询就开始起作用了。但是,包括该代码并没有阻止此异常被抛出在下面的代码上。我现在认为该问题与应用程序验证用户之前运行的代码有关。如果是这种情况,我将如何确保在验证码之后运行此代码?
- 结束编辑 -
我将在下面列出我的一些尝试:
private MobileServiceCollection<SbTask, SbTask> taskItems;
private IMobileServiceTable<SbTask> taskTable = App.MobileService.GetTable<SbTask>();
尝试1)
private async void GetTodo()
{
// Can't convert IMobileServiceTableQuery<Int> to
// IMobileServiceQuery<AppName.Models.Sbtask>
IMobileServiceTableQuery<SbTask> query = taskTable
.Where(t => t.Status == 1)
.Select(t => t.Status);
}
尝试2)
private async void GetTodo()
{
IMobileServiceTableQuery<int> query = taskTable
.Where(t => t.Status == 1)
.Select(t => t.Status);
// MobileServiceInvalidOperationException
// Additional information: Error: Unauthorized
List<int> statusOne = await query.ToListAsync();
Value = statusOne.Count; // Also tried statusOne.Sum();
}
尝试3)
private async void GetTodo()
{
var query = taskTable
.Where(t => t.Status == 1)
.Select(t => t.Status)
.IncludeTotalCount();
// MobileServiceInvalidOperationException
// Additional information: Error: Unauthorized
var results = await query.ToEnumerableAsync();
long count = ((ItotalCountProvider)results).TotalCount;
int counts = Int32.Parse(count.ToString());
List<int> stats = await query.ToListAsync();
for (int i = 0; i < counts; i++)
{
Value += stats[i];
}
}
尝试4)
private async void GetTodo()
{
var query = taskTable
.Where(t => t.Status == 1)
.Select(t => t.Status)
.IncludeTotalCount();
// MobileServiceInvalidOperationException
// Additional information: Error: Unauthorized
List<int> stats = await query.ToListAsync();
long count = ((ItotalCountProvider)stats).TotalCount;
int counts = Int32.Parse(count.ToString());
for (int i = 0; i < counts; i++)
{
Value += stats[i];
}
}
尝试5)
private async void GetTodo()
{
// MobileServiceInvalidOperationException
// Additional information: Error: Unauthorized
taskItems = await taskTable.ToCollectionAsync();
Value = taskItems.Count(t => t.Status == 1);
}
我尝试了其他一些可能不值得一提的事情,而且我一直都在寻找解决这个问题的方法 - 我所有的一切都是&#39我们真正了解到这是一个难题,我(显然)还没有真正找到解决方案。
提前感谢任何可以提供帮助的人。
答案 0 :(得分:0)
事实证明,问题与身份验证有关。将GetTodo()方法移出我的viewmodel类并进入xaml.cs文件就可以了。