我有一个ASP.NET MVC 5应用程序已经在其控制器中使用StructureMap进行依赖项解析。在添加应用程序第一个API控制器之后,我安装了StructureMap.WebApi2 NuGet包以获得对API控制器的扩展依赖性解析。安装后,我在运行应用程序时出现以下错误...
对象引用未设置为对象的实例。
描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
来源错误:
第46行:{ 第47行:foreach(var任务) 第48行:StructuremapMvc.StructureMapDependencyScope.CurrentNestedContainer.GetAllInstances()) 第49行:{ 第50行:task.Execute();
要测试我从StructureMapScopeModule类中注释掉以下代码行:
private void Context_Error(object sender, EventArgs e)
{
//foreach (var task in StructuremapMvc.StructureMapDependencyScope.CurrentNestedContainer.GetAllInstances<IRunOnError>())
//{
// task.Execute();
//}
}
private void OnContextOnEndRequest(object sender, EventArgs e)
{
//foreach (var task in
// StructuremapMvc.StructureMapDependencyScope.CurrentNestedContainer.GetAllInstances<IRunAfterEachRequest>())
//{
// task.Execute();
//}
HttpContextLifecycle.DisposeAndClearAll();
StructuremapMvc.StructureMapDependencyScope.DisposeNestedContainer();
}
删除这些行后,错误消失了,我能够正确使用我的新API类。在我看到的应用程序中没有其他任何东西坏了。然而,这部分代码是由以前的开发人员编写的,当我不知道原始目的是什么时,我对删除代码犹豫不决。
有人能告诉我这些线路的预期目的是什么,或者它们是否是除了删除它们之外的另一种解决方案?