Когда <Компиляция> используется в ASP.net
У меня возникли проблемы с установкой элемента ExecutionTimeout в моих приложениях web.config.
Моя страница делает длительный вызов веб-службы и истекает через 110 секунд. (по умолчанию я считаю). Я установил значение 220, и убедитесь, что компиляция отладка = ложь.
Относится ли параметр компиляции, когда IIS/ASP.net компилирует страницы ASPX, когда клиент запрашивает их, или это относится к процессу компиляции Visual Studio, где создаются сборки.
Позволит ли использование сборки, созданной с помощью debug в visual studio, работать с вышеуказанными настройками?
3 ответа
IIS не компилирует ASPX-страницы, когда люди их запрашивают. Если у вас есть "проект веб-приложения" в VS, вы компилируете весь свой код и другие файлы классов перед развертыванием. Если у вас есть "проект веб-сайта" в VS, то веб-сервер компилирует ваше приложение только по первому запросу. После того, как это произойдет, приложение не будет скомпилировано снова, пока вы не внесете изменения.
Имея эту информацию в виду выше, это когда компиляция debug = true | ложь входит в игру. Имея debug = true, вы получаете довольно подробную информацию об ошибках и других событиях, но это может замедлить работу вашего приложения, поскольку символы отладки вставляются в.dll, и в целом он не оптимизирован для производительности. Устанавливая debug = false, вы не получаете такой же уровень отчетов об ошибках, но вы возвращаете прирост производительности.
Если вы создаете VS, он будет собираться в соответствии с настройками в файле web.config, если это не внешний проект.dll / class, который вы включаете. Если это так, то настройки web.config ничего не значат для этого.dll и будут работать независимо от того, какая комбинация debug = false|true используется в этих двух проектах.
Тег компиляции используется для добавления библиотек, на которые ссылаются, для компиляции IIS или Visual Studio, а также для определения режимов отладки и пакетной компиляции.
Говоря о debug
атрибут, вот хорошая статья со всеми подробностями в блоге Милана Негова.
И о самой компиляции.
Есть 3 режима компиляции. Они полностью описаны в обзоре MSDN.
По умолчанию веб-приложение использует обновляемую прекомпиляцию: все .cs
файлы компилируются в одну сборку, но все страницы, элементы управления и главные страницы компилируются по требованию в новый производный класс.
В проекте веб-сайта по умолчанию используется компиляция на месте.
И не подлежащая обновлению полная прекомпиляция должна быть указана явно. А вот когда compilation
тег приходит. Если batch="true"
тогда все страницы в приложении будут скомпилированы по первому запросу на любую страницу. Это перемещает нас в еще одну историю о больших приложениях:)
Обратите внимание, что есть некоторые другие особенности в модели компиляции, посмотрите Обзор предкомпиляции ASP.NET, если вам это действительно нужно.
IIS компилирует страницы ASPX (и ASCX UserControls, ASHX, ASMX, ...) при первом запросе. Он также динамически компилирует:
Код в папке App_Code
Код на страницах рядом с кодом для проекта сайта
Элемент компиляции в web.config ссылается на эту компиляцию.
Если вы используете проект веб-приложения в Visual Studio, ваши страницы ASPX будут иметь файл с выделенным кодом. Это скомпилировано в DLL, когда проект собран в Visual Studio, и не будет затронуто элементом компиляции web.config.