asp.net Ajax计时器轮询WCF服务

asp.net Ajax计时器轮询WCF服务,asp.net,ajax,wcf,Asp.net,Ajax,Wcf,我使用asp:Timer控件每10秒轮询一个服务 我知道计时器正在工作,就像我注释掉服务呼叫一样,时间将完美地更新面板 然而,当服务呼叫被启用时,计时器将正确地更新面板几次,但随后它将开始挂起 我相信这是由于服务方面的瓶颈,但服务只是返回一个项目列表 以下是每个级别的代码: ASP.Net <asp:UpdatePanel ID="pnlProjectList" runat="server"> <ContentTemplate> <asp:Timer id="upd

我使用asp:Timer控件每10秒轮询一个服务

我知道计时器正在工作,就像我注释掉服务呼叫一样,时间将完美地更新面板

然而,当服务呼叫被启用时,计时器将正确地更新面板几次,但随后它将开始挂起

我相信这是由于服务方面的瓶颈,但服务只是返回一个项目列表

以下是每个级别的代码:

ASP.Net

<asp:UpdatePanel ID="pnlProjectList" runat="server">
<ContentTemplate>
<asp:Timer id="updateTimer" Interval="10000" runat="server" 
        ontick="updateTimer_Tick">
</asp:Timer>
}

有人能就A)我做错了什么或B)我想做的事情的最佳实践向我提供建议吗


谢谢。

可以归结为很多事情。尝试使用Trace Viewer更详细地分析WCF通信,并找出何时何地遇到错误

在.config文件中,可以添加块。要启用跟踪,只需添加dignostics块,当应用程序运行时,将在指定位置生成跟踪文件。这将使您能够更深入地挖掘问题

可以找到跟踪查看器:

(“C:\Program Files\Microsoft SDK\Windows\v6.0A\bin\SvcTraceViewer.exe”)

有关跟踪查看器使用的信息: 我解决了这个问题

基本上,每次调用Tick事件时,都会触发页面加载事件,这意味着它正在创建一个新的演示者。每个新的演示者都在创建一个到服务的新连接,并且没有一个连接被关闭,因此导致服务过载


现在,我有一个函数可以关闭连接,该连接在每次调用服务的方法后被调用。

为什么您需要每10秒更新一次项目列表。。。。。。
public partial class Controls_ProjectList : System.Web.UI.UserControl, IProjectListView
{
ProjectListPresenter presenter;

protected void Page_Load(object sender, EventArgs e)
{
    presenter = new ProjectListPresenter(this);
    if (!IsPostBack)
    {
        presenter.GetProjects();
        lbUpdateTime.Text = "Updated at " + DateTime.Now.ToLongTimeString();
    }
}

public ProjectTable ProjectList
{
    set { 
        dlProjectList.DataSource = value.Projects;
        dlProjectList.DataBind();
    }
}
protected void updateTimer_Tick(object sender, EventArgs e)
{
    try
    {
        presenter.GetProjects();
        lbUpdateTime.Text = "Updated at " + DateTime.Now.ToLongTimeString();
    }
    catch (TimeoutException ex)
    {

    }
}