我正在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
我这里的想法已经不多了。也许他们都需要不同的联系?如果是这样,我该怎么办?
由于