В моем приложении asp.net-mvc я пытаюсь настроить Turbine.
Код инициализации выглядит следующим образом:
public class MvcApplication : TurbineApplication
{
static MvcApplication()
{
ServiceLocatorManager.SetLocatorProvider(() => new UnityServiceLocator());
}
}
и тогда у меня есть набор регистраторов, сопоставимый со следующим:
public class UserRepositoryRegistration : IServiceRegistration
{
public void Register(IServiceLocator locator)
{
locator.Register<IUserRepository, Db4oUserRepository>();
}
}
Если я пытаюсь запустить, я получаю следующую ошибку где-то после SetLocatorProvider, но перед вводом любого из методов регистрации:
Ошибка сервера в приложении '/'.
Невозможно загрузить один или несколько запрошенных типов. Получите свойство LoaderExceptions для получения дополнительной информации.
Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.Reflection.ReflectionTypeLoadException: невозможно загрузить один или несколько запрошенных типов. Получите свойство LoaderExceptions для получения дополнительной информации.
Ошибка источника:
Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение. Информация о происхождении и местонахождении исключения может быть идентифицирована с помощью приведенной ниже трассировки стека исключений.
Трассировка стека:
[ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.]
System.Reflection.Module._GetTypesInternal(StackCrawlMark& stackMark) +0
System.Reflection.Assembly.GetTypes() +105
MvcTurbine.ComponentModel.DefaultAutoRegistrator.AutoRegister(ServiceRegistration serviceRegistration) +338
MvcTurbine.Web.RotorContext.ProcessAutomaticRegistration(AutoRegistrationList registrationList) +155
MvcTurbine.Web.RotorContext.AutoRegistrationForContext() +163
MvcTurbine.Web.RotorContext.Turn() +37
MvcTurbine.Web.TurbineApplication.ExecuteContext() +43
MvcTurbine.Web.TurbineApplication.TurnRotor() +65
MvcTurbine.Web.TurbineApplication.Application_Start(Object sender, EventArgs e) +85
UPDATE
Сузили проблемную библиотеку до Db4objects.Db4o.Linq.dll
Как только у меня есть эта библиотека в качестве ссылок (даже не «использующих», просто добавленных к ссылкам) в одной из моих библиотек, на которую ссылается мое веб-приложение mvc, я получаю вышеупомянутый YSOD. Все остальные библиотеки Db4o работают просто отлично.
METTRE À JOUR
Попытался обменять UnityServiceLocator с WindsosServiceLocator и NinjectServiceLocator. Точно такие же результаты, так что, скорее всего, проблема не возникает ни в одной из библиотек.
OPPDATERING
Для воссоздания страницы ошибки достаточно выполнить следующие шаги:
- Создание нового приложения Mvc (не важно, какая версия)
- Измените код gloabal.asax.cs для использования MvcTurbine и добавьте необходимые библиотеки MvcTurbine
Вы найдете все по-прежнему работает, как ожидалось
- Добавить Db4objects.Db4o.dll
Все еще работает
- Добавить Db4objects.Db4o.linq.dll
YSOD
Есть идеи, где и как это отладить?