#mysql #asp.net #mono
#mysql #asp.net #mono
Вопрос:
Я создал ASP.NET веб-приложение на сервере Linux под управлением Apache и mod_mono с базой данных MySQL с использованием MySQL Connector / NET. Все работает великолепно… но только после того, как генерируется начальное исключение: если в течение «некоторого времени» никто не делал запросов для этого сайта (я не знаю точной продолжительности и причины этого, но, похоже, действует какой-то часовой тайм-аут), тогда новый запрос всегда приводит к:
System.IO.FileNotFoundException
Could not load file or assembly 'MySql.Data' or one of its dependencies
Description: HTTP 500.Error processing request.
Details: Non-web exception. Exception origin (name of application or object): mscorlib.
Exception stack trace:
at System.AppDomain.Load (assemblyString, assemblySecurity, refonly)
at System.AppDomain.Load (assemblyString)
at (wrapper remoting-invoke-with-check) System.AppDomain:Load (string)
at System.Reflection.Assembly.Load (assemblyString)
at System.Web.Compilation.BuildManager.LoadAssembly (info, al)
at System.Web.Compilation.BuildManager.GetReferencedAssemblies ()
at System.Web.Compilation.BuildManager.CallPreStartMethods ()
Простая перезагрузка / обновление или повторный запрос браузера всегда выполняется успешно, и после этого все работает нормально, даже если браузер закрыт, а затем запускается новый сеанс до истечения «некоторого времени», и даже если другой пользователь из другого места делает запрос — все всегда работает после этого первоначального единственного исключенияэто каким-то образом «исправляется» простым повторным выполнением запроса.
Мысли о причинах / исправлениях этого раздражения? Это не производит хорошего первого впечатления!
Комментарии:
1. К счастью, такое впечатление вы должны получить как можно раньше. Только ASP.NET Core — это полностью поддерживаемый кроссплатформенный вариант от Microsoft, поэтому вам следует остановиться сейчас и переключить полосу движения.
Ответ №1:
Тот факт, что ошибка возникает только при первой попытке, означает, что, в конечном счете, файл (DLL) найден. Единственный экземпляр MySql.Data.dll находится (был) в GAC.
Но ASP.NET веб-приложения также будут использовать библиотеки DLL в папке /bin в корневом каталоге приложения, поэтому я создал /bin и удалил копию MySql.Data.dll into it: проблема решена! Больше никаких ошибок при запуске.