Как внедрить общую зависимость обслуживания в Azure TableController - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь внедрить зависимость 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;
        }
    }
...