Когда <Compilation>используется в ASP.net - PullRequest
2 голосов
/ 23 июня 2010

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

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

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

Позволит ли использование сборки, созданной с помощью отладки в Visual Studio, работать вышеуказанные настройки?

Ответы [ 3 ]

2 голосов
/ 23 июня 2010

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

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

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

1 голос
/ 23 июня 2010

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

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

А по поводу самой компиляции.

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

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

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

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

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

0 голосов
/ 23 июня 2010

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

  • Код в папке App_Code

  • Код на страницах рядом с кодом для проекта сайта

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

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

...