asp.net Ajax Timer для опроса службы WCF - PullRequest
0 голосов
/ 03 декабря 2009

Я использую элемент управления 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>

C # код страницы позади

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)
    {

    }
}

}

Может кто-нибудь посоветовать мне: а) что я делаю неправильно или б) лучшие практики для того, что я пытаюсь сделать

Спасибо.

Ответы [ 2 ]

1 голос
/ 03 декабря 2009

Может быть до любого количества вещей. Попробуйте использовать Trace Viewer для более подробного анализа сообщений WCF и выяснения, когда и где встречаются ошибки.

Внутри ваших файлов .config вы можете добавлять блоки. Чтобы включить трассировку, просто добавьте блоки dignostics, и файлы трассировки будут сгенерированы в указанном месте при запуске приложения. Это должно позволить вам немного углубиться в проблему.

Просмотрщик трасс можно найти:

("C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ bin \ SvcTraceViewer.exe")

Информация об использовании средства просмотра трассировки: http://msdn.microsoft.com/en-us/library/aa751795.aspx

0 голосов
/ 04 декабря 2009

Я решил проблему.

По сути, каждый раз, когда вызывается событие Tick, запускается событие загрузки страницы, что означает, что он создает нового докладчика. Каждый новый докладчик создавал новое соединение со службой, и ни одно из соединений не закрывалось, поэтому это перегружало службу.

Теперь у меня есть функция для закрытия соединения, которая вызывается после каждого вызова метода службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...