【发布时间】:2021-08-06 16:33:23
【问题描述】:
我用 c#、javascript 编写了一个代码,使用客户端库 SignalR 在数据库值更改中刷新页面。我的代码是
<form asp-action="Start" method="post" class="form-stacked">
<button type="submit" id="startPractice" class="button-primary">Start Practice</button>
</form>
<script src="~/js/ignalr/dist/browser/signalr.js"></script>
<script src="~/js/chat.js"></script>
我的API方法是点击开始练习时调用的
public async Task<IActionResult> Index(long sessionId)
{
// Database change logic
SignalRClientHub sr = new SignalRClientHub();
await sr.SendMessage();
// Rest of the logic
return this.View();
}
public class SignalRClientHub : Hub
{
public async Task SendMessage(string user = null, string message = null)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
chat.js 代码
"use strict";
var connection = new signalR.HubConnectionBuilder().withUrl("/SignalRClient").build();
connection.on("ReceiveMessage", function (user, message) {
location.reload();
});
当我单击按钮开始练习时,它会点击 SendMessage 方法,但我收到错误
object reference not set to an instance
因为 Client 的值为 null。我该如何解决这个问题?
【问题讨论】:
-
您的客户可能为空:await Clients.All.SendAsync("ReceiveMessage", user, message);
-
哪一行导致空引用错误?
-
@Devilscomrade at await Clients.All.SendAsync("ReceiveMessage", user, message);这一行我得到一个错误
标签: javascript c# jquery signalr