Почему блоки сценариев бесконечно растут в отладчике VS2010 при запуске страницы ASP.Net с частичной обратной передачей? - PullRequest
23 голосов
/ 18 августа 2011

На странице ASP.Net, которая использует UpdatePanel, содержащую различные проверенные элементы управления для частичных обратных передач, в окне отладчика сценариев Visual Studio 2010 начинает отображаться постоянно растущий список записей «Блок сценариев», которые выглядят анонимно, как мы генерируем автоматически функции, связанные с элементами управления на панели при ее перезагрузке. Похоже, что старые блоки скриптов из предыдущих раз, когда панель обновлялась, не располагаются, поэтому список просто продолжает расти, замедляя страницу и отладчик, пока IE не закроется, после чего может потребоваться много времени для удаления сотен блоков, которые появились.

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

Ответы [ 2 ]

9 голосов
/ 23 сентября 2011

Ну, вот ваш ответ.

Первый способ

http://vishaljoshi.blogspot.com/2009/06/disabling-script-debugging-with-vs-2010.html

В основном, когда вы отлаживаете через VS2008 / 2010, IE8 и вперед, отладка сценариев будет включена автоматически.Который критикуется многими.Однако есть несколько обходных путей.

Первая из приведенных выше статей рассказывает о том, как включить отладку Silverlight, и указывает путь для обоих проектов, а также для веб-сайтов, куда идти и как его включить.

Как только вы включите отладку silverlight, JS отладка отключится, так как обе не могут работать рядом.

Недостаток (если вы действительно так думаете): необходимо установить инструменты Silverlight для VS

Второй способ

Запустить приложение без отладки (CTRL + F5) после запуска приложенияприсоедините отладчик вручную, нажав Отладка-> Присоединить к процессу.

Теперь для VS 2008

Для VS 2008 есть несколько альтернатив, таких как редактирование разделов реестра и так далее.

Если кому-то понадобится помощь VS 2008, проверьте это.http://blogs.msdn.com/b/greggm/archive/2009/04/06/disabling-script-debugging-in-vs-2008-ie8.aspx

0 голосов
/ 25 мая 2013

Так как Timer находится внутри UpdatePanel, Timer будет обновлять себя при обновлении UpdatePanel и, следовательно, продолжать и больше javascript.Что вам нужно сделать, так это поместить свой таймер за пределы UpdatePanel и связать его с триггерами.

Следующее создаст таймер, который будет обновлять Panel после вызова GetStatus из кода.

<asp:Timer runat="server" ID="Timer1" Interval="5000" OnTick="GetStatus" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
    </Triggers>
    <ContentTemplate>
        <fieldset>
            <asp:Button ID="Button1" runat="server" Text="DoStuff"
                OnClick="Button1_Click" />
            <asp:Label ID="Label1" runat="server" Text="Blank"></asp:Label>
        </fieldset>
    </ContentTemplate>
</asp:UpdatePanel>


    protected void GetStatus(object sender, EventArgs e)
    {
        Label1.Text = "Stuff!!!";
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...