JQuery从aspx页面检索数据

时间:2012-07-04 07:59:14

标签: c# javascript jquery asp.net

我想从aspx页面检索数据。但是,如果填充,则在静态字段中等待数据。

JQuery:

   $.ajax({
        url: "Services/JSON/GetMessage.aspx",
        type: "GET",
        dataType: "json",
        success: function (response) { alert(response.Text); },
        error: function (x, t, m) {
            if (t === "timeout") {
                alert("got timeout");
            } else {
                alert(t);
            }
        }
    })

服务/ JSON / GetMessage.aspx

<%@ Page Language="C#" %>
<% 
Response.Clear();
Response.ContentType = "text/json";
int tryCount = 0;
while (1 == 1)
{
    if (ClsStaticFields.Messages.Count > 0)
    {
        foreach(string message in ClsStaticFields.Messages) {
             Response.Write("{ Text:'" + message + "' }");
        }
    }
    tryCount ++;
    if (tryCount > 29) break; // 1 Minute wait and exit
    System.Threading.Thread.Sleep(2000); // 2 Second wait
}
Response.End();
%>

我很好奇:

  • 这个等待期是否会影响其他用户?
  • 这会导致IIS或页面锁定吗?
  • 这种用法对CPU造成了不良影响吗?

1 个答案:

答案 0 :(得分:0)

我看到您使用GetMessage.aspx页面,aspx页面可能与会话相关联,这会影响其他用户。

如果可能,则禁用该页面的会话,一切正常。

<%@ Page Language="C#" EnableSessionState="false" %>

相对

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

完整视图

我不认为你在这个闭环中等待消息的方式是个好主意,我建议两种选择。

在浏览器using a javascript timer上进行定期通话。以太网的方式每两秒钟收到一次消息,为什么不每隔几秒钟从浏览器调用一条消息呢?

甚至更好地使用彗星方法来调用服务器。以下是asp.net中的彗星示例:http://www.aaronlerch.com/blog/2007/07/08/creating-comet-applications-with-aspnet/

为什么不好,首先你使用属于asp.net iis的线程,并且与浏览器调用连接,即保持开放连接,很快你的开放连接就会用完,也许就是asp。净网线有问题。

定期检查就像使用Timers更好,而不是使用线程等待关闭循环,这里最好的地方是浏览器他自己。