asp.net Ajax计时器轮询WCF服务
我使用asp:Timer控件每10秒轮询一个服务 我知道计时器正在工作,就像我注释掉服务呼叫一样,时间将完美地更新面板 然而,当服务呼叫被启用时,计时器将正确地更新面板几次,但随后它将开始挂起 我相信这是由于服务方面的瓶颈,但服务只是返回一个项目列表 以下是每个级别的代码: ASP.Netasp.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: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)
{
}
}