我有一个SignalR中心,我想用它来发送消息从Windows服务到ASP.NET MVC应用程序。我正在使用SqlServer背板,我可以通过SMSS看到已创建表并通过Windows服务插入行。问题是没有调用客户端方法。
我想知道问题是什么,因为我已经将服务和Web应用程序配置为使用相同的背板(通过连接字符串)。到目前为止,我已经尝试在我的集线器上调用静态方法(后者又使用hubContext将消息发送到客户端),当我使用调试器逐步调试代码时调用该方法,但在浏览器中,没有任何反应。我也试过在Windows服务本身创建一个集线器上下文,并通过集线器发送消息,但这也不起作用。
以下是相关的代码: ASP.NET MVC SignalR配置:
public void Configuration(IAppBuilder app)
{
GlobalHost.DependencyResolver.UseSqlServer(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
app.MapSignalR();
GlobalHost.DependencyResolver.Register(typeof(JsonSerializer), () => s_jsonSerializerFactory.Value);
UnitsHub.NotifyWorker.Start();
}
Windows服务配置:
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
GlobalHost.DependencyResolver.UseSqlServer(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
app.MapSignalR();
}
客户端方法:
constructor(sr: SignalR, jobId: any) {
sr.jobsHub.client.jobStarted = this.jobStarted.bind(this);
sr.jobsHub.client.jobCompleted = this.jobCompleted.bind(this);
var id = 1044;
var jId = id.toString();
sr.jobsHub.server.trackJob(jId, true);
}
jobStarted() {
console.log("Job started!");
}
jobCompleted() {
console.log("job completed");
}
SignalR Hub方法:
public static void JobStarted(string jobId)
{
var hubContext = GlobalHost.ConnectionManager.GetHubContext<JobsHub>();
hubContext.Clients.Group(jobId).jobStarted();
}
在Windows服务中使用集线器:
JobsHub.JobStarted(runningJob.Id.ToString());
编辑:我已经启用了跟踪功能,但它似乎无法提供有关问题的线索。每次针对数据库运行查询时,它只是说&#34;没有收到记录。&#34;