Я пытаюсь внедрить зависимость CommonService в TableController, как показано ниже, и она прекрасно работает, если я вызываю конечную точку контроллера таблицы, например "http://localhost: 61558 / api / TodoItem ".
но он выдает ошибку, когда я вызываю ту же конечную точку, используя «http://localhost: 61558 / tables / TodoItem » (правильный способ, как SDK мобильного приложения вызывает этот URL для синхронизации c данных)
Исключение:"ExceptionType": "System.InvalidOperationException"
ExceptionMessage : "Произошла ошибка при попытке создать контроллер типа 'TodoItemController'. Убедитесь, что контроллер имеет конструктор publi c без параметров. ",
Я правильно настроил DIUnityConfig:
public static void RegisterComponents()
{
var container = new UnityContainer();
container.RegisterType(typeof(ICommonService), typeof(CommonService));
Current = container;
}
Вот код контроллера таблицы:
[Authorize]
public class TodoItemController : TableController<TodoItem>
{
private readonly ICommonService _ICommonService;
public TodoItemController(ICommonService commonService)
{
_ICommonService = commonService;
}
protected override void Initialize(HttpControllerContext controllerContext)
{
base.Initialize(controllerContext);
MobileServiceContext context = new MobileServiceContext();
DomainManager = new EntityDomainManager<TodoItem>(context, Request, enableSoftDelete: true);
}
// PATCH tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public async Task<TodoItem> PatchTodoItem(string id, Delta<TodoItem> patch)
{
var item = await UpdateAsync(id, patch);
await PushToSyncAsync("todoitem", item.Id);
_ICommonService.SendMail();// Want to send mail on bussiness logic.
return item;
}
}