Избегайте aspnet_compiler, выполняющего метод PreApplicationStart

Я не знаю никакой функции вроде этого как часть MySQL.

Альтернативным решением может быть использование функции importHtml в электронной таблице Google.

Таблицы Google позволяют вам импортировать данные в Интернете

g0]

24
задан driis 30 November 2012 в 09:51
поделиться

2 ответа

Короткий ответ: вы не можете помешать его запуску, и это сделано специально , но вы можете обойти эту проблему.

Почему методы PreApplicationStart выполняются во время aspnet_compiler.exe

Причина в том, что PreApplicationStartMethod (или WebActivator , основанный на нем) можно использовать для вещей, которые фактически влияют на компиляцию , так что если вы пропустили его, сайт может не скомпилироваться.

Чтобы дать вам пример, вы можете добавить пространства имен к компиляции в методе PreAppStart, который затем влияет на компиляцию ваших страниц Razor.

Очевидно, что не каждый метод PreAppStart нуждается в для запуска при использовании aspnet_precompiler, но мы запускаем их все в случае необходимости.

Обнаружение того, что вы работаете с aspnet_compiler.exe

Если код там ломается под aspnet_compiler, может потребоваться добавить условную логику в метод PreAppStart для обнаружения ситуации и пропустить запуск код.

Вы можете взглянуть на свойство System.Web.Hosting.HostingEnvironment.InClientBuildManager, чтобы определить, работает ли ваш метод PreAppStart в контексте aspnet_compiler.exe (где он будет true), или во время выполнения (где он будет false) , InClientBuildManager также относится к созданию веб-сайта в VS, который использует в основном тот же путь кода, что и aspnet_compiler.exe.

Попробуйте вместо этого использовать методы PostStart

Обратите внимание, что WebActivator также поддерживает PostApplicationStartMethod, и те не будут работать в aspnet_compiler. Этот код запускается после Application_Start, поэтому он может соответствовать или не соответствовать вашему сценарию. Но это может быть решением для вас.

aspnet_compiler.exe Совет по отладке

Непосредственно не связан, но полезен для отладки: вы можете передать -errorstack в aspnet_compiler.exe, чтобы получить более полный стек при возникновении ошибки.

31
ответ дан sharptooth 30 November 2012 в 09:51
поделиться

PreApplicationStartMethod - это атрибут сборки для загрузки кода на очень ранней стадии процесса сборки. Компилятор должен загрузить и запустить этот код, чтобы начать процесс компиляции. PreApplicationStartMethod похож на процесс построения, а не на процесс инициализации. Так что вы можете попробовать поместить свой код в метод Application_Start в global.asax !!

0
ответ дан Parth Jani 30 November 2012 в 09:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: