Прерывистое исключение System.InvalidOperationException, возникающее в веб-приложении ASP.NET MVC после сброса IIS в веб-ферме
У нас есть функционирование ASP.NET MVC 5.2.2
сайт работает на .NET Framework 4.5.1
размещены на веб-ферме с многочисленными серверами. Веб-приложение интегрируется с 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" />
Иногда что-то происходит по всей ферме, возможно, с помощью:
- WebDeploy
- Перезагрузка сервера
- Ручной сброс IIS
Существует вероятность того, что одно из веб-приложений на уязвимом узле не будет работать должным образом. Он запустится, но 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 в самый неподходящий момент. Веб-приложение запускается, но IoC не настроен, следовательно, ошибка выше.
Мои вопросы
Это известная проблема? Я действительно сделал поиск в Интернете
Если вы испытали это, у вас есть представление о возможных причинах?
Как мы можем исправить эту досадную ошибку для наших клиентов?
Это так же просто, как обновить что-то? Нравится StructureMap и AppDynamics?
редактировать
Веб-приложение развертывается в общей сетевой папке, которая передает все веб-серверы в ферме.:(
Настройка IoC должна работать, если она работает для всех остальных узлов. Эта проблема возникла после установки агентов AppDynamics.
Это происходит только в том случае, если IIS перезагружается по всей ферме. Один из сайтов на этом узле выдаст ошибку, о которой я упоминал выше.
Я все еще расследую на моей стороне
Application_Start()
от Global.asax
, Чтобы получить четкое изображение, нажмите на него.