从另一个控制器上的一个控制器调用TableController.Lookup()失败

时间:2016-03-17 20:09:50

标签: asp.net-web-api azure-mobile-services

在使用.NET后端的Azure移动应用程序中,我需要一个控制器来查找由第二个控制器处理的实体。例如,在Azure团队的Todo Quickstart项目中,想象一下添加一个处理用户管理的UserController。在TodoItemController中,我需要调用UserController.GetUser(id)来检查用户是否有权发布新的TodoItem。

TodoItemController.cs

var userController = new UserController();
var user = userController.GetUser("12345");
if (user.IsAuthorized) 
{
  // Insert TodoItem
}

UserController.GetUser()中调用TableController.Lookup()时,上述代码会引发异常。例外情况表明request参数不能为null。我的猜测是缺少某些东西,因为我自己创建了UserController,而不是由框架创建。

我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

这似乎适用于TodoItemController.cs

var context = new todoProjectContext();
var userDomainManager = new EntityDomainManager<User>(context, Request);
var user = userDomainManager.Lookup(id).Queryable.FirstOrDefault();
if (user.isAuthorized)
{
  // Insert item
}

不确定这是最好的解决方案。