Подтвердить что ты не робот

Почему блоки script растут бесконечно в VS2010 Debugger при запуске страницы ASP.Net с частичной обратной обработкой?

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

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

4b9b3361

Ответ 1

Хорошо, вот ваш ответ.

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

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

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

В первой статье приведена статья, в которой говорится о включении отладки 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

Ответ 2

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

Далее будет создан таймер, который обновит панель после вызова 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!!!";
    }