在我的 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 属性以获取更多信息。
说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Reflection.ReflectionTypeLoadException:无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。
源错误:在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
堆栈跟踪:
[ReflectionTypeLoadException:无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。] 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(对象发送者,EventArgs e)+85
更新
将问题库缩小到 Db4objects.Db4o.Linq.dll 一旦我将这个库作为引用(甚至不是“使用”,只是添加到引用中)在我的 mvc web 应用程序中引用的一个库中,我得到上面提到的YSOD。所有其他 Db4o 库都可以正常工作。
METTRE À JOUR
尝试将 UnityServiceLocator 与 WindsosServiceLocator 和 NinjectServiceLocator 交换。完全相同的结果,因此问题很可能不是源自任何一个库。
OPPDATERING
要重新创建错误页面,只需执行以下步骤:
- 创建新的 Mvc 应用程序(不管 wat 版本)
- 更改 gloabal.asax.cs 代码以使用 MvcTurbine 并添加所需的 MvcTurbine 库
您会发现一切仍然按预期工作 - 添加 Db4objects.Db4o.dll
仍然一切正常 - 添加 Db4objects.Db4o.linq.dll
YSOD
关于在哪里以及如何调试它的任何想法?