C# 如何配置信号器以允许ASP.NET MVC应用程序与Windows服务通信?
我有一个信号集线器,我想用它将消息从Windows服务发送到ASP.NET MVC应用程序。我正在为此使用SqlServer背板,我可以通过SMS看到表已经创建,行正在通过Windows服务插入。问题是没有调用客户端方法 我想知道问题出在哪里,因为我已经将服务和web应用程序配置为使用相同的背板(通过连接字符串)。到目前为止,我已经尝试在我的hub上调用一个静态方法(它反过来使用hubContext向客户机发送消息),在我使用调试器逐步完成代码时调用该方法,但是在浏览器中,什么也没有发生。我还尝试在windows服务本身中创建一个中心上下文,并通过该中心发送消息,但这也不起作用 以下是相关的代码位: ASP.NET MVC信号器配置:C# 如何配置信号器以允许ASP.NET MVC应用程序与Windows服务通信?,c#,windows,asp.net-mvc-4,signalr,C#,Windows,Asp.net Mvc 4,Signalr,我有一个信号集线器,我想用它将消息从Windows服务发送到ASP.NET MVC应用程序。我正在为此使用SqlServer背板,我可以通过SMS看到表已经创建,行正在通过Windows服务插入。问题是没有调用客户端方法 我想知道问题出在哪里,因为我已经将服务和web应用程序配置为使用相同的背板(通过连接字符串)。到目前为止,我已经尝试在我的hub上调用一个静态方法(它反过来使用hubContext向客户机发送消息),在我使用调试器逐步完成代码时调用该方法,但是在浏览器中,什么也没有发生。我还尝
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");
}
信号集线器方法:
public static void JobStarted(string jobId)
{
var hubContext = GlobalHost.ConnectionManager.GetHubContext<JobsHub>();
hubContext.Clients.Group(jobId).jobStarted();
}
编辑:我已经启用了跟踪,但它似乎没有提供问题可能是什么的线索。每次对db运行查询时,它只会说“未收到任何记录”。背板的内容存在可伸缩性问题,没有其他问题,因此安装不需要工作。在Sql中看到记录而在客户端中看不到调用这一事实与此无关。您的客户端连接到服务器的方式可能有错误,您检查了吗?是的,您是对的,问题与连接到服务器的客户端代码有关,但现在一切正常。
JobsHub.JobStarted(runningJob.Id.ToString());