所以基本上我正在使用结构图DI容器。应用程序类型是ASP.NET MVC 4.我在MvcApplication(global.asax)的构造函数中注册了类型映射,然后我使用自定义Controller工厂来提供我需要的类型,但事情可能是100-200请求结构映射失败并抛出异常Exception Code: 202 No Default Instance defined for PluginFamily
。我关闭了会话状态,因此单个用户可以使用多个并发请求。我的应用程序中的一个页面是动态绘制的,这个页面包含100-150个图像,这些图像在我的应用程序中返回一个动作,因此当该页面被加载时,一个或者可能是4-5个请求中的两个图片失败载入。原因是当我检索类型以将它们路径化到控制器结构时,向我抛出异常,说IMyService
没有默认类型。在其他地方,我的意思是应用程序,它似乎完美无缺。我没有在Application_Start
中注册类型映射,因为在MvcApplication
本身我需要检索一些注册的实例。
答案 0 :(得分:1)
根据您的评论,我会尽力猜测发生了什么。
由于您正在多次注册,并且您在MvcApplication构造函数中执行此操作,如果MvcApplication的两个不同实例正在并行处理请求(可能发生),您可以让InstanceA在InstanceB删除时解析服务从容器注册服务。发生这种情况时,依赖项解析失败,因为容器确实具有InstanceA正在寻找的东西。
注册是一次性任务,通常在系统启动时完成(Application_Start)。有例外,但它们非常罕见。
如果您需要解决MvcApplication中的依赖关系,请确保仅在Application_Start完成注册后才会发生这种情况。