1

У меня есть класс обслуживания ImageUploadService, который обрабатывает некоторые сложные операции по объединению путей изображения и сохранению изображений на сервере. Для этого потребуется экземпляр объекта Controller.Server в его конструкторе, который оказывается из класса HttpServerUtilityBase. Я использую Unity.MVC5 для управления зависимостями, и это дает мне мне эту ошибку:Тип HttpServerUtilityBase не имеет доступного конструктора

The type HttpServerUtilityBase does not have an accessible constructor. 

Так как же я могу решить эту проблему? Я чувствую, что это немного сложнее, поскольку Controller.Server недоступен непосредственно внутри конструктора контроллера и только сделал доступным действие внутри контроллера. Кто-нибудь знает, можно ли использовать инъекцию зависимостей на Controller.Server? Если да, то как?

+0

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

Это просто дает вам эту ошибку? У вас есть код, который заставил его дать вам эту ошибку, или Unity.MVC5 просто не похож на вас? Это ошибка времени компиляции, или это исключение? Если это исключение, отправьте полное исключение. –

+0

Ну, есть некоторые подробности об ошибке, но это может не очень помочь. Если вы хотите посмотреть больше, я скопировал/вложил все в pastebin: http://pastebin.com/kHqwv02E –

ответ

0

Используя Unity Вы должны зарегистрировать HttpServerUtilityWrapper следующим образом:

container.RegisterType<HttpServerUtilityBase, HttpServerUtilityWrapper>(
    new TransientLifetimeManager(), 
    new InjectionConstructor(HttpContext.Current.Server)); 

Ключ в том, что контейнер выполнен с возможностью вызывать конструктор прохождения HttpContext.Current.Server объекта с помощью InjectionConstructor.