Первоначальная загрузка проекта веб-приложения ASP.NET 3.5 занимает слишком много времени

Я начал работать в новой компании, и основной проект, над которым я работаю (проект веб-приложения ASP.NET 3.5), загружается слишком долго (около 1,5 минут).

Я знаю, что это, как правило, характер проектов веб-приложений, но моя проблема в том, что это кажется слишком длинным.

Я пробовал несколько вещей, чтобы попытаться определить, что может быть причиной этой задержки, включая замену web.config новым, созданным из нового проекта, очистил все от моего app_start в моем web.config, удалил все библиотеки DLL weppart из моей папки bin (что оставляет у меня 19 dll в моем каталоге bin, включая 6 из корпоративной библиотеки MS)

и все равно очень долго загружается.

Мне было интересно, есть ли у кого-нибудь какие-либо указатели относительно того, как я могу узнать, что вызывает такое огромное время загрузки, или какие-либо инструменты, которые помогут мне увидеть, что делает мое приложение, когда оно запускается.

спасибо -Крис


person Lightweight    schedule 14.05.2009    source источник
comment
Вы прошли через код? Может быть, это инициализация базы данных или что-то в этом роде.   -  person Jonathan Parker    schedule 14.05.2009
comment
Язык здесь немного двусмысленный. Когда вы говорите «Проект веб-приложения», вы имеете в виду загрузку проекта в Visual Studio или имеете в виду время запуска приложения в IIS при первом обращении?   -  person Rex M    schedule 14.05.2009
comment
Привет, Рекс, я имею в виду время запуска приложения в IIS при первом обращении (или, в данном случае, встроенный веб-сервер VS)   -  person Lightweight    schedule 14.05.2009
comment
Есть ли какое-то тяжелое кэширование данных при первой загрузке?   -  person hunter    schedule 14.05.2009
comment
вы используете активный каталог?   -  person corymathews    schedule 29.04.2011


Ответы (5)


В .NET 2.0 и выше есть еще одна ошибка. Если у вас есть какие-либо подписанные сборки в папке bin, CLR пытается подключиться к URL-адресу VeriSign и извлекает список отзыва сертификатов, чтобы проверить, действительны ли они.

Это также может занять некоторое время вашего запуска. Если вы считаете, что это может способствовать вашей проблеме, вы можете ознакомиться со следующими статьями MS:

http://digital.ni.com/public.nsf/allkb/18E25101F0839C6286256F960061B282
http://support.microsoft.com/kb/936707

Чтобы решить эту проблему для каждого приложения, вы можете добавить следующие настройки в разделе конфигурации в файле app.config/web.config.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <runtime>
       <generatePublisherEvidence enabled="false" />
    </runtime>
</configuration>

Конечно, если вы добавите этот параметр, подписанные библиотеки DLL больше не будут проверяться на подлинность!

person Raghu    schedule 30.12.2009
comment
Если это в основном проблема в разработке, вы можете отключить ее во время разработки и включить в реальном приложении. - person awe; 10.09.2010

Попробуйте скрипт разминки.

JetBrains DotTrace — отличный инструмент для профилирования ASP.NET.

person Chris Ballance    schedule 14.05.2009
comment
Спасибо, Крис, но моя проблема связана с работой над проектом, то есть с разработкой кода › компиляцией › просмотром изменений – не могу запланировать разминку каждые 5 минут. - person Lightweight; 14.05.2009
comment
+1 за рекомендацию DotTrace — прикрепите ее к сайту и посмотрите, что занимает время для загрузки. Также взгляните на использование памяти и процессора — это w3wp, который забирает все ресурсы или что-то еще? - person Zhaph - Ben Duguid; 14.05.2009
comment
Привет, Крис, я, должно быть, слепой, я не видел второй строки с упоминанием DotTrace, спасибо. - person Lightweight; 14.05.2009

Сколько проектов? Если у вас есть куча сборок и dll в каталоге bin, это может значительно замедлить время загрузки (даже если они довольно малы). Это лучшее, что я могу предложить.

person tsimon    schedule 14.05.2009
comment
Есть еще 8 проектов, которые мне не кажутся такими уж плохими. есть много dll веб-частей, поэтому я попытался удалить их все и протестировать время загрузки после этого, но все равно без радости :( - person Lightweight; 14.05.2009

Попробуйте использовать SQL Profiler и понаблюдайте за соответствующей активностью базы данных во время запуска.

Скорее всего, к базе данных при первом просмотре страницы поступает множество запросов для инициализации различных кэшей.

Если это так, вы можете сосредоточить свои усилия на оптимизации запросов, вызывающих наибольшую блокировку.

person richardtallent    schedule 14.05.2009

Профилировщик ANTS от RedGate может дать вам несколько советов относительно того, что, возможно, вас замедляет.

Установите точку останова на Page_Load в Default.aspx.cs и приступайте к работе.

Проверьте файл Global.asax, чтобы узнать, загружается ли что-то, о чем вы не знаете.

Другие проекты загружаются быстро? У вас запущены другие программы, которые могут замедлять работу вашей машины? Как вы упомянули, приложения .NET дольше всего загружаются при начальной загрузке... много ли у вас ссылок (внешних библиотек, dll... и т.д...)

Если вы публикуете на промежуточном сервере или сервере разработки, быстро ли он загружается?

person Jack Marchetti    schedule 15.12.2010