ASP.NET 服务器不异步处理页面

标签 asp.net jquery asynchronous webforms

我有一个带有按钮的页面,我想通过单击按钮异步加载 2 个数据网格。

这是页面的代码,我使用 jquery 调用其他 2 个页面,这将产生 html。

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Solutions_CashCenter_StockManagement_Test_Test" %>
<asp:Content ID="Content2" ContentPlaceHolderID="cphCenter" Runat="Server">
<style type="text/css">
    #wait {
    position:absolute;
    top:0px;
    right:10px;
    width:200px;
    z-index:1000;
    vertical-align:middle;
    text-align:center;
    background: #febf00;
    display:none;
}
</style>
<script src='<%= ResolveUrl("../../../../Scripts/jquery-1.4.1.js") %>' type="text/javascript"></script>
<script type="text/javascript">
    $(function () {
        $('#wait')
        .ajaxStart(function () { $(this).show(); })
        .ajaxStop(function () { $(this).hide(); });

        $('input:button').live('click', loadData);
    });

    function loadData() {
        $.get("Source.aspx", {},
        function (data) {
            $('#a1').html(data);
        },
        "html");

        alert('This alert is asynchronous (1st)');

        $.get("Source2.aspx", {},
        function (data) {
            $('#a2').html(data);
        },
        "html");

        alert('This alert is asynchronous (2nd)');
    }
</script>
<div id="test13">
    <input type="button" id="btnLoad" value="Load" />
</div>
<div id="a1"></div>
<div id="a2"></div>
<div id="wait">Please wait <img src="ajax-loading.gif" /></div>
</asp:Content>

然后我有 2 个 aspx 页面,Source1.aspx 和 Source2.aspx。它们仅包含一个 gridDataView 和 OnLoad 事件中的少量代码。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Source.aspx.cs" Inherits="Solutions_CashCenter_StockManagement_Test_Source" %>
<form runat="server">
<cc1:GridDataView runat="server" ID="gridTest" >
</cc1:GridDataView>
<asp:SqlDataSource ID="dsTest" runat="server" ConnectionString="<%$ ConnectionStrings:WebPortalConnectionString %>"
    ProviderName="<%$ ConnectionStrings:WebPortalConnectionString.ProviderName %>">
</asp:SqlDataSource>
</form>

服务器端:

Thread.Sleep(5000);
dsTest.SelectCommand = "SELECT 'test1', 'test2', 'test3'";
this.gridTest.DataSourceID = "dsTest";
this.gridTest.DataBind();

第二页也是如此,但网格数据不同。

我得到的结果是两个警报同时发生,但是网格是一个接一个地加载的,即第一个网格在 5 秒后出现,然后第二个网格在另外 5 秒后出现。 也就是说,服务器实际上并不同时处理它们。

我做错了什么?我应该如何组织所有工作按照我的需要进行?

最佳答案

发生这种情况是因为 session 锁定了页面读取。
因此,当加载一页时, session 会锁定所有其余请求,直到完成并发送页面。

要使其工作,您需要以太币来禁用此页面上的 session ,以太币使用默认情况下没有 session 锁定的处理程序。

相关问题:

Trying to make Web Method Asynchronous
Web app blocked while processing another web app on sharing same session
What perfmon counters are useful for identifying ASP.NET bottlenecks?
Replacing ASP.Net's session entirely

关于ASP.NET 服务器不异步处理页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12284530/

相关文章:

javascript - asp.net 网站的下拉菜单

javascript - 如何通过变量中的id获取div的文本

ios - "Request failed: unacceptable content-type: text/html"使用 AFNetworking 2.0

c++ - 如何在C++中异步调用静态方法?

c# - 从 Objectdatasource 上的 FetchCount() 访问时 Hiddenfield 为空

c# - : ASP.net 或 WCF 哪个更简单?

c# - 编译器错误消息 : CS0246: when I renamed my project

javascript - 创建类名的构建系统

javascript - Node.js 在执行函数之前需要等待 for 循环完成

asp.net - 使用 ASP.NET SQL Membership Provider,我如何存储我自己的每用户数据?