C# 结构映射意外抛出错误代码202异常

C# 结构映射意外抛出错误代码202异常,c#,asp.net-mvc,structuremap,C#,Asp.net Mvc,Structuremap,所以基本上我使用的是结构映射DI容器。应用程序类型为ASP.NET MVC 4。我正在MVCAPApplication(global.asax)的构造函数中注册类型映射,然后我使用自定义控制器工厂来提供我需要的类型,但问题是,在100-200次请求中,结构映射失败并抛出异常,表示异常代码:202没有为PluginFamily定义默认实例。我关闭了会话状态,因此多个并发请求可供单个用户使用。我的应用程序中的一个页面是动态绘制的,该页面包含100-150个图像,这些图像由我的应用程序中的一个操作返回

所以基本上我使用的是结构映射DI容器。应用程序类型为ASP.NET MVC 4。我正在MVCAPApplication(global.asax)的构造函数中注册类型映射,然后我使用自定义控制器工厂来提供我需要的类型,但问题是,在100-200次请求中,结构映射失败并抛出异常,表示
异常代码:202没有为PluginFamily定义默认实例
。我关闭了会话状态,因此多个并发请求可供单个用户使用。我的应用程序中的一个页面是动态绘制的,该页面包含100-150个图像,这些图像由我的应用程序中的一个操作返回,因此当加载该页面时,可能会有一个或两个图片在4-5请求中加载失败。原因是,当我检索类型以将它们路径发送到控制器结构时,map向我抛出异常,表示
IMyService
没有默认类型。在其他任何地方,我指的是应用程序,它似乎都能完美地工作。我没有在
Application\u Start
中注册类型映射,因为在
mvcapapplication
本身中,我需要检索一些已注册的实例。

根据您的评论,我将对发生的情况做出最佳猜测

由于您注册了不止一次,并且是在MVCAPApplication构造函数中注册的,因此,如果两个不同的MVCAPApplication实例并行处理请求(这可能会发生),您可以让InstanceA解析服务,同时InstanceB从容器中删除和注册服务。当这种情况发生时,依赖项解析将失败,因为容器确实具有InstanceA正在寻找的内容(尚未)

注册是一项一次性任务,通常在系统启动(应用程序启动)时完成。也有例外,但非常罕见


如果需要解析MVCAP应用程序中的依赖项,请确保这仅在应用程序\u Start完成注册后发生。

显示一些注册代码。另外,如果您在启动时没有注册,您在哪里(何时)注册?听起来你可能注册了不止一次?是的,基本上我注册了不止一次。这会造成什么问题吗?我正在MVCapApplication的构造函数中注册,该构造函数可以重用或构造。那么,是的,注册码执行不止一次,那么wcf呢?我的解决方案中有wcf应用程序。因此,我有一种基本服务,它在构造函数中注册类型,然后立即检索它们。你上面说的在这种情况下也会发生,对吗?是的。同样,我们的想法是在启动时注册一次,除了极少数例外情况外,永远不要再注册。