从服务器到客户端的 SignalR 消息重复

SignalR message from server to client duplicated

我正在解决 MVC 应用程序中 SignalR 的问题。我已经基于 internet template 创建了一个 MVC 4 项目并安装了 SignalR nuget packetHub class 看起来像这样:

public class yourAppHub : Hub
{
    static Timer t;

    public yourAppHub()
    {
        t = new Timer(5000);
        t.Elapsed += Hello;
        t.Start();
    }

    public void Hello(object sender, ElapsedEventArgs e)
    {
        Clients.All.refreshPage("hello");
    }
}

这就是我在母版页上的内容(_Layout.cshtml):

@if (Request.IsAuthenticated)
{
    <script>
        $(function () {
            var con = $.hubConnection();
            var hub = con.createHubProxy('yourAppHub');
            hub.on('refreshPage', function (message) { alert(message); });

            con.start(function () { hub.invoke('Hello'); });
        });
    </script>
}

当我登录时,我每 5 秒收到 2 个警报。为什么有 2 个警报?但是,如果我转到主页,然后转到联系表,然后在另一个页面上,警报开始不断弹出。我无法理解我在这里做错了什么。我希望警报每 5 秒弹出一次。

我已经学习了这个精彩的教程 http://www.dotnetcurry.com/aspnet-mvc/826/server-side-timer-aspnet-mvc-signalr。它实现单例并在该单例中而不是在集线器中启动计时器。现在它按预期工作了。