0

我们有一个运行在一个拥有大量服务器的网络场上ASP.NET MVC 5.2.2运行的网站。.NET Framework 4.5.1Web 应用程序与 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,因此出现上述错误。


我的问题

  1. 这是一个已知的问题?我确实在网上搜索过

  2. 如果您经历过这种情况,您是否知道可能的原因是什么?

  3. 我们如何为我们的客户解决这个恼人的间歇性错误?

  4. 是不是像更新一样简单?喜欢 StructureMap 和 AppDynamics?


编辑

  • Web 应用程序部署到一个网络共享文件夹,该文件夹为场中的所有 Web 服务器提供数据。:(

  • 如果 IoC 设置适用于所有其他节点,则它必须正常工作。这个问题似乎在安装 AppDynamics 代理后就开始了。

  • 只有在整个场中重置 IIS 时才会发生这种情况。该节点上的一个站点将抛出我上面提到的错误。

  • 我还在我这边调查

Application_Start()Global.asax. 要查看图像的清晰视图,请单击它。

全球.asax

4

0 回答 0