【发布时间】:2018-02-28 20:32:32
【问题描述】:
我已经建立了一个signalR网站.net core。我在中心的功能是:
public async Task Notify(int id) {
await Clients.All.InvokeAsync("Notified", id);
}
我也用下面的js测试过这个:
let connection = new signalR.HubConnection(myURL);
connection.on('Notified', data => {
console.log(4, data);
});
connection.start();
js 代码似乎工作正常,我在尝试connection.Invoke('Notify') 时看到了日志。
现在我有一个控制台应用程序需要进行调用。我正在尝试两种方式,不介意任何一种解决方案:
1. signalR 网站中的 mvc 控制器,可以获取 id 并调用“通知”。
2. 在控制台应用程序中使用客户端库Microsoft.AspNetCore.SignalR.Client。
1的方式我只在经典的asp.net中做过这样的:
GlobalHost.ConnectionManager.GetHubContext(hubName)
但在 .net 核心中找不到执行此操作的方法。
方式2到目前为止我已经使用过该库并尝试过:
var con = new HubConnectionBuilder();
con.WithUrl(myURL);
var connection = con.Build();
connection.InvokeAsync("Notify",args[0]).Wait();
这是我以与 js 代码相同的方式创建连接的最接近的方法。但是,此代码在调用 connection.InvokeAsync 时会抛出一个空指针。 connection 对象不为空。它似乎是一个为空的内部对象。根据堆栈跟踪,当内部调用 MoveNext() 函数时会引发异常。
【问题讨论】:
标签: asp.net-core-mvc signalr.client asp.net-core-2.0 asp.net-core-signalr