У меня есть рабочий проект Visual Studio, который я хочу запустить o Mac с Mono и MonoDevelop. Проект представляет собой приложение ASP.NET MVC 3 с Ninject MVC, которое в основном вводит на контроллер некоторые реализации интерфейса.Моно, ASP.NET MVC 3, Ninject и требуемый конструктор по умолчанию
После добавления всех проектов ASP.NET MVC dll и зависимостей Ninject к проекту он успешно компилируется. Но когда я иду запустить его, у меня есть ошибка:
Конструктор по умолчанию не найден для типа WebActivatorTest.Controllers.HomeController.
Мой контроллер имеет следующий код:
public class HomeController : Controller
{
INotifier _notifier;
public HomeController(INotifier notifier_)
{
_notifier = notifier_;
}
public ActionResult Index()
{
ViewBag.Name = _notifier.Person();
return View();
}
}
Я не хочу иметь пустой конструктор, потому что теперь у меня есть код AppStart регистрации мой интерфейс:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<WebActivatorTest.Models.INotifier>().To<WebActivatorTest.Models.Notifier>();
}
Этот код прекрасно работает на Windows,/Visual Studio, но не работает в Mono. Может кто-нибудь мне помочь?
Полная ошибка:
Server Error in '/' Application
Default constructor not found for type WebActivatorTest.Controllers.HomeController.
Description: HTTP 500. Error processing request.
Stack Trace:
System.MissingMethodException: Default constructor not found for type WebActivatorTest.Controllers.HomeController.
at System.Activator.CreateInstance (System.Type type, Boolean nonPublic) [0x00000] in <filename unknown>:0
at System.Activator.CreateInstance (System.Type type) [0x00000] in <filename unknown>:0
at System.Web.Mvc.DefaultControllerFactory+DefaultControllerActivator.Create (System.Web.Routing.RequestContext requestContext, System.Type controllerType) [0x00000] in <filename unknown>:0
Version information: Mono Runtime Version: 2.10.9 (tarball Tue Mar 20 15:31:37 EDT 2012); ASP.NET Version: 4.0.30319.1
Что Mono версии вы используете? – skolima
Возможный дубликат [Без объекта конструктора без параметрирования] (http://stackoverflow.com/questions/9916012/no-parameterless-constructor-object-defined) –
Тот факт, что Ninject не упоминается в исключении [что вы не опубликовали] stronly предполагает, что MVC не был правильно проинформирован о вас и о желании Ninject взять на себя ответственность за создание контроллера. Причина, по которой вы не находите дуп, и мне потребовалось много времени, чтобы найти одно - это то, что вы не указали точное сообщение об исключении - это экономит много времени, если вы cna remeber, чтобы добавить эту ключевую деталь в будущем ... –