Когда используется «Компиляция» в ASP.net

У меня возникли проблемы с настройкой элемента ExecutionTimeout в моих приложениях web.config.

Моя страница делает длительный вызов веб-службы и истекает через 110 секунд. (по умолчанию я считаю). Я установил значение 220 и убедился, что компиляция debug=false.

Относится ли параметр компиляции к тому, когда IIS/ASP.net компилирует страницы ASPX, когда клиент их запрашивает, или относится к процессу компиляции Visual Studio, в котором создаются сборки.

Будет ли использование сборки, созданной с использованием отладки в Visual Studio, по-прежнему позволять работать вышеуказанным настройкам?


person Kye    schedule 23.06.2010    source источник


Ответы (3)


IIS не компилирует aspx-страницы, когда их запрашивают пользователи. Если у вас есть «проект веб-приложения» в VS, вы компилируете весь свой код и другие файлы классов перед развертыванием. Если у вас есть «проект веб-сайта» в VS, веб-сервер компилирует ваше приложение только по первому запросу. После любого из этих событий приложение не будет компилироваться снова, пока вы не внесете изменения.

Имея в виду эту информацию выше, это когда компиляция debug = true | ложь вступает в игру. Имея debug = true, вы получаете довольно подробную информацию об ошибках и других событиях, но это может замедлить работу вашего приложения, поскольку символы отладки вставляются в .dll, и в целом оно не оптимизировано для производительности. Установив debug = false, вы не получите тот же уровень отчетов об ошибках, но вы вернете прирост производительности.

Если вы строите VS, он будет строиться в соответствии с настройками в web.config, если только вы не включаете внешний проект .dll/class. Если это так, то настройки web.config ничего не значат для этой .dll и будут работать независимо от того, какая комбинация debug = false|true у вас есть в этих двух проектах.

person Tommy    schedule 23.06.2010
comment
Код программной части AFAIK скомпилирован в DLL для веб-приложения. Но тем не менее страницы, элементы управления и мастера компилируются как классы, производные от исходных страниц. - person terR0Q; 23.06.2010

Тег Compilation используется для добавления ссылочных библиотек для компиляции с помощью IIS или Visual Studio, а также для указания режимов отладки и пакетной компиляции.

Говоря об атрибуте debug, вот хорошая статья со всеми подробностями в блоге Милана Негована.

И о самой компиляции.

Есть 3 режима компиляции. Они полностью описаны в обзоре MSDN.

По умолчанию веб-приложение использует обновляемую предварительную компиляцию: все .cs файлы компилируются в одну сборку, но все страницы, элементы управления и мастер-страницы компилируются по запросу в новый производный класс.

Проект веб-сайта по умолчанию использует компиляцию на месте.

И необновляемая полная прекомпиляция должна быть указана явно. А вот когда приходит тег compilation. Если batch="true" то все страницы в приложении будут скомпилированы по первому запросу на любую страницу. Это перемещает нас к еще одной истории о больших приложениях :)

Обратите внимание, что в модели компиляции есть некоторые другие особенности, см. Обзор предварительной компиляции ASP.NET если вам это действительно нужно.

person terR0Q    schedule 23.06.2010

IIS компилирует страницы ASPX (и пользовательские элементы управления ASCX, ASHX, ASMX,...) при первом запросе. Он также динамически компилируется:

  • Код в папке App_Code

  • Код на дополнительных страницах для проекта веб-сайта

Элемент компиляции в web.config ссылается на эту компиляцию.

Если вы используете проект веб-приложения в Visual Studio, ваши страницы ASPX будут иметь файл кода программной части. Он компилируется в DLL, когда проект создается в Visual Studio, и на него не влияет элемент компиляции web.config.

person Joe    schedule 23.06.2010