Asp.Net页面连续9次回发后重置,求排查方向
ASP.NET网站连续异步回发9次后页面重置问题排查
在VS 2022中使用IIS Express(Chrome浏览器)测试ASP.NET网站时,发现UpdatePanel内设置AutoPostBack=true的RadSearchBox,在连续选择10+项后,前9次回发能正常处理,第10次及之后页面出现重置现象:Page_PreLoad阶段ViewState为空,控件无法正常实例化。
为复现问题,在回调方法中添加3秒Thread.Sleep模拟耗时操作,无论休眠时长,均会在9次回发后触发失效。
已完成排查:
- ViewState大小仅128字节,无异常增长
- 线程池可用线程数变化不超过1,无资源耗尽迹象
- 请求大小正常,无超限情况
现咨询:Ajax、IIS Express或IIS本身是否存在连续回发次数限制?
用户控件(仅保留问题相关PageView)
<%@ Control Language="C#" AutoEventWireup="true" %> <td class='<%# TdClass %>'> <telerik:RadPageView ID="PV1" runat="server"> some controls </telerik:RadMultiPage> <telerik:RadPageView ID="PV2" runat="server"> some controls </telerik:RadMultiPage> <telerik:RadPageView ID="PV3" runat="server"> <div style="width: 75px; float: left;"> <asp:UpdatePanel ID="UP1" runat="server" > <ContentTemplate> <telerik:RadSearchBox ID="Combo1" runat="server" Width="100%" DataTextField="Descr" DataValueField="Id" ZIndex="7001" EmptyMessage="- nom -" ShowSelectItem="true" SelectItemText="" ExpandAnimation-Type="None" CollapseAnimation-Type="None" AutoPostBack="true" OnSelectedIndexChanged="Combo1_SelectedIndexChanged" > </stm:STMRadSearchBox> </ContentTemplate> </asp:UpdatePanel> </div> </telerik:RadPageView> </telerik:RadMultiPage> </td>
protected void Combo1_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e) { Thread.Sleep(3000); }
生成用户控件列表的面板
<%@ Control Language="C#" AutoEventWireup="true" %> <telerik:RadAjaxPanel ID="IIRAP" runat="server"> <div class="Content"> <span id="tata"></span> <telerik:RadListView ID="LVI" runat="server" GroupItemCount="3" OnNeedDataSource="LVI_NeedDataSource" OnItemCreated="LVI_ItemCreated" OnPreRender="LVI_PreRender" Visible="<%# CanViewIntervenant %>"> <LayoutTemplate> <table> <tr id="groupPlaceholder" runat="server"> </tr> </table> </LayoutTemplate> <GroupTemplate> <tr> <uc:ICTL ID="itemPlaceholder" runat="server" /> </tr> </GroupTemplate> <ItemTemplate> <uc:ICTL ID="ICTL1" runat="server" /> </ItemTemplate> <EmptyItemTemplate> <th> </td> <td> </td> </EmptyItemTemplate> </telerik:RadListView> </div> </telerik:RadAjaxPanel>
使用该面板的页面
<%@ Page Language="C#" %> <%@ Register Src="~/UserControl/Detail.ascx" TagPrefix="uc" TagName="Detail" %> <asp:Content ID="Content2" ContentPlaceHolderID="MC" runat="server" style="height: 100%"> <div id="divPageContent"> <asp:ValidationSummary ID="ValidationSummarySave" runat="server" ValidationGroup="Save" CssClass="errorSummary" Style="margin-top: 30px;" /> <telerik:RadPanelBar ID="PD1" runat="server" Width="100%" ExpandMode="MultipleExpandedItems"> <Items> <telerik:RadPanelItem Value='<%# RadPanelItemValue.Intervenants.ToString() %>' Text="Intervenants" Expanded="true"> <Items> <telerik:RadPanelItem> <ItemTemplate> <uc:Detail ID="II1" runat="server" /> </ItemTemplate> </telerik:RadPanelItem> </Items> </telerik:RadPanelItem> </Items> </telerik:RadPanelBar> </div> </asp:Content>
内容的提问来源于stack exchange,提问作者Eric Plante
相关产品推荐
相关产品推荐

