Почему Session_Start в Global.asax.cs вызывает проблемы с производительностью?

Когда я создаю пустой обработчик 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 IFRAME, каждый с номером внутри. Все, что я здесь делаю, это создаю страницу, которая загружает еще 20 страниц. Прежде чем продолжить, обратите внимание на то, как быстро загружаются эти 20 страниц (обновите страницу несколько раз, чтобы повторить загрузку).

Затем перейдите в свой Global.asax.cs и добавьте этот метод ( да, тело метода пусто):

protected void Session_Start()
{
}

Теперь снова запустите страницу. На этот раз вы заметите, что 20 IFRAME загружаются намного медленнее, один за другим с интервалом в 1 секунду. Это странно, потому что на самом деле мы не d ничего в Session_Start ... это просто пустой метод. Но этого вроде бы достаточно, чтобы вызвать замедление на всех последующих страницах.

Кто-нибудь знает, почему это происходит, и, что еще лучше, есть ли у кого-нибудь исправление / обходной путь?

Обновление

Я обнаружил, что такое поведение возникает только тогда, когда подключен отладчик (работает с F5).Если вы запустите его без подключенного отладчика (Ctrl-F5), все в порядке. Так что, возможно, это не серьезная проблема, но все же странно.

9
задан Charles 9 May 2011 в 04:41
поделиться