我们有一个运行在一个拥有大量服务器的网络场上ASP.NET MVC 5.2.2
运行的网站。.NET Framework 4.5.1
Web 应用程序与 AppyDynamics 集成。AppDynamics .NET Agent 4.3.2.1
安装在每台服务器上。我注意到这是一个过时的版本,但我们还无法更新。
我们将 StructureMap 用于 IoC。
<package id="structuremap" version="3.1.1.134" targetFramework="net451" />
<package id="StructureMap.MVC5" version="3.1.1.134" targetFramework="net451" />
<package id="structuremap.web" version="3.1.0.133" targetFramework="net451" />
有时整个农场都会发生一些事情,可能是:
- 网络部署
- 服务器重启
- 手动 IIS 重置
受影响节点上的其中一个 Web 应用程序有可能无法正常运行。它将启动,但 IoC 从未执行,导致以下错误:
System.InvalidOperationException:
An error occurred when trying to create a controller of type 'TestController'. Make sure that the controller has a parameterless public constructor.
---> System.MissingMethodException: No parameterless constructor defined for this object.
我们无法证明这一点,但我们认为 AppDynamics 代理只是在错误的时间拦截了 IIS 应用程序。Web 应用程序启动但未配置 IoC,因此出现上述错误。
我的问题
这是一个已知的问题?我确实在网上搜索过
如果您经历过这种情况,您是否知道可能的原因是什么?
我们如何为我们的客户解决这个恼人的间歇性错误?
是不是像更新一样简单?喜欢 StructureMap 和 AppDynamics?
编辑
Web 应用程序部署到一个网络共享文件夹,该文件夹为场中的所有 Web 服务器提供数据。:(
如果 IoC 设置适用于所有其他节点,则它必须正常工作。这个问题似乎在安装 AppDynamics 代理后就开始了。
只有在整个场中重置 IIS 时才会发生这种情况。该节点上的一个站点将抛出我上面提到的错误。
我还在我这边调查
Application_Start()
从Global.asax
. 要查看图像的清晰视图,请单击它。