iis 我的ASP.NET页回发在页重置之前似乎有固定的回发次数

a11xaf1n  于 11个月前  发布在  .NET
关注(0)|答案(1)|浏览(156)
  • 我的问题背景:-
    我在VS 2022中进行测试,并使用IIS Express(Chrome)启动网站。在UpdatePanel中的AutoPostBack=true组合框中连锁选择10个以上项目后,页面在成功处理其中9个项目后重置。通过重置我的意思是在Page_PreLoad,当它工作时一切正常,ViewState是空的,并且对于完全相同的页面和完全相同的逻辑,不再示例化控件。
    这个问题是在正常执行过程中发现的,但是它需要更多的体操来重现,所以我将测试限制在那个组合框中,并在回调方法中添加了3秒的线程睡眠来模拟。它总是在9之后停止工作,不管回调睡眠多长时间。
  • 问题:-
    是否有某种限制,以连锁回发的数量与aplog或IIS Express或IIS或任何其他可以做我所描述的?
    在网上搜索我发现的一切都不适用;视图状态大小没有增长,只有128字节,池中可用线程和最大线程的数量不会减少超过1,请求的大小也很好。
  • 布局和代码:-
    我们有一个面板的页面,它创建了一个用户控件的示例列表,其中包含各种PageView中的各种控件,每个示例只显示一个PageView,并且只有一个示例会在面板中出现问题。这不是构建用户控件的最佳方法,但我继承了这个网站。
    不幸的是,我不能发布正式的代码,但我会尽量给予尽可能多的代码来说明控件的上下文。
****** The user Control ******

字符串
我只保留了这个问题的页面视图,因为其他的都不相关。

<%@ 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);
        }
****** The panel creating a List of UserControl ******
<%@ 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>
                    &nbsp;</td>
                    <td>
                        &nbsp;
                    </td>
            </EmptyItemTemplate>
        </telerik:RadListView>
    </div>
    </telerik:RadAjaxPanel>
****** The page using the panel ******
<%@ 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:DetailID="II1" runat="server" />
                            </ItemTemplate>
                        </telerik:RadPanelItem>
                    </Items>
                </telerik:RadPanelItem>
            </Items>
        </telerik:RadPanelBar>
    </div>
   </asp:Content>
cwtwac6a

cwtwac6a1#

感谢您的所有输入.是什么让我的想法在正确的方向是,回发必须完成之前发送另一个.我探索了这个想法之前没有找到一个解决方案,这是wierd,因为我一定不是第一个有这样的问题.我相信它在那里,只是从来没有偶然发现它的一些原因.一个解决方案,工作来自一个意想不到的来源,chatGPT的所有地方。以防万一,它可能会帮助别人,虽然我怀疑有更好的解决方案,因为它似乎是一个尴尬的方式来处理这个问题,但在这里:

<script type="text/javascript">
            var _requestsAdded = false;
            function pageLoad() {
                if (_requestsAdded == false) {
                    var prm = Sys.WebForms.PageRequestManager.getInstance();
                    prm.add_beginRequest(BeginRequestHandler);
                    prm.add_endRequest(EndRequestHandler);
                    _requestsAdded = true;
                }
            }
            function BeginRequestHandler(sender, args) {
                //Start of PostBack.
                var element= document.getElementById('<%= serverSideControl.ClientID %>');
                element.control._enabled = false
            }

            function EndRequestHandler(sender, args) {
                //end of postback
            }
        </script>

字符串

相关问题