【发布时间】:2014-04-19 22:33:29
【问题描述】:
我的页面中有这段代码,但是当我在数据库中进行更改时它不运行,可能是什么问题。 这开始很好,当我加载页面时,它会执行两次该函数,但如果我向数据库发送消息,则不会执行。
$(function () {
var chat = $.connection.chatHub;
chat.client.allTalks = function () {
refresh();
};
$.connection.hub.start();
refresh();
});
服务器端(集线器):
[HubName("chatHub")]
public class ChatHub : Hub
{
public static void AllTalks()
{
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
context.Clients.All.allTalks();
}
}
处理程序
...
using (SqlCommand command = new
SqlCommand(@"SELECT * FROM [dbo].[chat_talks]", connection)) {
//内容
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
... }
public void dependency_OnChange(object sender, SqlNotificationEventArgs e)
{
ChatHub.AllTalks();
}
GLOBAL.ASAX
protected void Application_Start(object sender, EventArgs e)
{
SqlDependency.Start(ConfigurationManager.ConnectionStrings["ProjectSellerConnection"].ConnectionString);
}
【问题讨论】:
-
我认为你需要移动 $.connection.hub.start();在你运行 chat.client.allTalks 之前,你需要 var chat 是一个全局变量
-
我在每一步都添加了console.log,并在页面加载时启动,但是当我更新数据库时它不会调用我的jQuery函数
-
您是否调试/跟踪了您的服务器端代码以验证
Clients.allTasks是否实际被调用。您可以将您的服务器端代码添加到您的问题中吗?我还将您的客户端日志添加到您的问题中。即使您在客户端日志中没有发现任何问题,它也可能对尝试回答您的问题的其他人有所帮助。 -
能否添加dependency_OnChange的完整代码?您在哪里调用集线器客户端方法(我假设是 Clients.All.allTalks())?
标签: c# javascript jquery asp.net signalr