SQLApendency在多次连接时多次触发

时间:2017-06-05 18:14:41

标签: javascript c# asp.net-mvc sql-server-2008

我正在ASP.NET (MVC Razor)为我们公司制定预约时间表。我正在使用SQLDependency,因此页面可以通过服务代理进行更新。我们目前有15个服务中心,每个服务中心可能有1到4台计算机,可以接听电话并插入/修改/删除约会。我们的客户还可以选择使用我们的在线预约工具进行在线预约,因此我们需要这些工具保持动态并不断刷新,因此我们不会同时预订2位客户。

到目前为止,一切正常。页面会在需要时不断刷新,我们距离推出新工具还有两天时间。除了在生产环境中进行测试时(我们将当前工具切换到新服务器,因此我们在使用之前对其进行测试),我们意识到当网站建立了2个连接时,{{ 1}}行为疯狂。它会每次加倍通知(第一次,第二次通知两次,4,8,16,32等等......所以它会迅速升级)因此,它只会变得无用,因为它会刷新部分视图太多倍。我想知道我是否遗漏了什么。这是一些代码片段:

首先,javascript调用:

SQLDependency

具有$(function () { // Declare a proxy to reference the hub. var notifications = $.connection.rendezVousHub; // Create a function that the hub can call to broadcast messages. notifications.client.updateAgenda = function () { getAllRdv() }; // Start the connection. $.connection.hub.start().done(function () { getAllRdv(); }).fail(function (e) { alert(e); }); }); 调用和命令

C#函数
SQLDependency

public IEnumerable<RendezVousModels> GetAllRdv(DateTime date, int whsCode) { _date = date; _whsCode = whsCode; string query = @"[dbo].[InfosAgenda]"; var rdv = new List<RendezVousModels>(); using (var connection = new SqlConnection(_connString)) { connection.Open(); using (var command = new SqlCommand(query, connection)) { command.Notification = null; command.CommandType = CommandType.StoredProcedure; command.Parameters.AddWithValue("@Date", date.ToShortDateString()); command.Parameters.AddWithValue("@WhsCode", whsCode); dependancy = new SqlDependency(command); dependancy.OnChange += new OnChangeEventHandler(dependency_OnChange); if (connection.State == ConnectionState.Closed) connection.Open(); var reader = command.ExecuteReader(); while (reader.Read()) { rdv.Add(item: new RendezVousModels { // set infos into Model }); } } } return rdv; } 事件功能:

onChange

我这里的想法已经不多了。也许他们都需要不同的联系?如果是这样,我该怎么办?

由于

0 个答案:

没有答案