Когда я создаю пустой обработчик Session_Start в Global.asax.cs, он вызывает значительный удар при отображении страниц в браузере.
Как воспроизвести:
Создайте пустое веб-приложение ASP.NET MVC 3 (я использую MVC 3 RC2).
Затем добавьте контроллер Home с этим кодом:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Number(int id)
{
return Content(id.ToString());
}
}
Затем создайте представление Home / Index.cshtml и поместите в раздел BODY следующее:
@for (int n = 0; n < 20; n++)
{
<iframe src="@Url.Content("~/Home/Number/" + n)" width=100 height=100 />
}
Когда вы запустите эту страницу, на странице появятся 20 КАДРОВ, каждая с номером внутри. Все, что я делаю здесь, это создание страницы, которая загружает еще 20 страниц за кулисами. Прежде чем продолжить, обратите внимание на то, как быстро загружаются эти 20 страниц (обновите страницу несколько раз, чтобы повторить загрузку).
Далее перейдите к вашему Global.asax.cs и добавьте этот метод (да, тело метода пусто):
protected void Session_Start()
{
}
Теперь снова запустите страницу. На этот раз вы заметите, что 20 IFRAME загружаются намного медленнее, один за другим, с интервалом около 1 секунды. Это странно, потому что мы на самом деле ничего не делаем в Session_Start ... это просто пустой метод. Но этого, по-видимому, достаточно, чтобы вызвать замедление на всех последующих страницах.
Кто-нибудь знает, почему это происходит, и еще лучше, если у кого-нибудь есть исправление / обходной путь?
Обновление
Я обнаружил, что это происходит только при подключенном отладчике (работает с F5). Если вы запустите его без подключенного отладчика (Ctrl-F5), то все будет в порядке. Так что, может быть, это не является серьезной проблемой, но все же странно.