SignalR:调用Hub方法"XXX"时出错

Isi*_* O. 29 .net c# windows-8 windows-runtime signalr

服务器:

public void AddLine(string line)
{
    Clients.Others.addLine(line);
}
Run Code Online (Sandbox Code Playgroud)

.NET客户端:

await rtHubProxy.Invoke("AddLine", "lineInfo");
Run Code Online (Sandbox Code Playgroud)

例外:

InvalidOperationException: There was an error invoking Hub method 'xxx.AddLine'.
Run Code Online (Sandbox Code Playgroud)

实际上,我试图用复杂的对象调用方法,只是为了找到异常.因此,我更改了参数的类型并将AddLine()体留空以进行调试,奇怪的是,它仍然抛出相同的异常.

我在客户端也有另一个SignalR调用,上面只有几行,响应性地运行而没有错误.相应的服务器端代码如下:

public void Hello(string text)
{
    Clients.All.hello(text);
}
Run Code Online (Sandbox Code Playgroud)

谁能找到我错在哪里?我已经调试了超过4个小时,即使在我简化代码后仍然无法找到撤消.

(严格检查拼写,没有不匹配.)

Hir*_*koo 62

很明显,你在服务器端遇到了一些问题.但要找出问题所在,您需要查看详细错误.出于安全原因,SignalR默认情况下不会给您一个详细的错误.但您可以编辑代码以获取详细错误.

首先,您需要将此代码添加到Startup.cs:

var hubConfiguration = new HubConfiguration();
    hubConfiguration.EnableDetailedErrors = true;
    app.MapSignalR(hubConfiguration);
Run Code Online (Sandbox Code Playgroud)

然后,要在客户端显示错误,您需要将此代码添加到您的项目:

$.connection.hub.error(function (error) {
    console.log('SignalR error: ' + error)
});
Run Code Online (Sandbox Code Playgroud)

就这么简单,你很高兴.

有时您甚至没有到达客户端部分来查看错误.但是通过执行第一部分,您将启用详细错误,您可以看到SignalR响应中的错误.您只需要一个像Chrome浏览器Web开发人员工具这样的工具,它可以为您提供网络部分操作,其中记录了所有数据传输状态.你可以检查那里的SignalR错误.日志中的信息将非常详细和有用.

这是使用Chrome浏览器的示例调试,适用于通过Chrome调试工具查看SignalR错误的人:

下载完整图像大小

这适用于想要通过Chrome浏览器调试ajax响应的用户

如果您有其他问题,请告诉我.

有关其他信息,请访问:SignalR错误

  • 感谢您的回答!实际上我已经启用了该选项,但大多数情况下仍然发现异常消息非常简短。我猜问题在于调试SignalR时服务器端代码没有刷新,有时甚至没有运行。 (2认同)