ASP.NET Server不会异步处理页面

时间:2012-09-05 15:11:39

标签: 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秒后出现。 那就是服务器实际上并不会同时处理它们。

我做错了什么,我应该如何安排所有工作?

1 个答案:

答案 0 :(得分:4)

这是因为会话锁定页面读取 因此,当加载一个页面时,会话将锁定所有其余请求,直到完成并发送页面。

要使其工作,您需要以太网来禁用此页面上的会话,以太使用处理程序,默认会话锁定没有。

相关问题:

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