服务器:
public void AddLine(string line)
{
Clients.Others.addLine(line);
}
.NET客户端:
await rtHubProxy.Invoke("AddLine", "lineInfo");
例外情况:
InvalidOperationException: There was an error invoking Hub method 'xxx.AddLine'.
实际上,我试图用复杂对象调用该方法,却发现了异常,因此,我更改了参数的类型,并将AddLine()主体留空,以便于调试,但奇怪的是,它仍然抛出相同的异常。
我在客户端还有另一个SignalR调用,就在上面几行,它响应性地运行,没有错误。
public void Hello(string text)
{
Clients.All.hello(text);
}
有没有人能找出我哪里出错了?我已经调试了4个多小时,即使在我简化了代码后,仍然找不到解决方法。
(严格检查拼写,无不匹配。)
2条答案
按热度按时间nwlqm0z11#
显然你在服务器端有一些问题。但是要找出问题所在,你需要看到详细的错误信息。出于安全原因,SignalR默认情况下不会给予你详细的错误信息。但是你可以编辑代码来获得详细的错误信息。
首先,您需要将此代码添加到Startup.cs:
然后,为了在客户端显示错误,您需要将以下代码添加到项目中:
就这么简单你就可以走了。
有时候你甚至无法在客户端看到错误。但是通过执行第一部分,你将启用详细错误,你可以在SignalR响应上看到错误。你只需要一个工具,如Chrome浏览器Web开发工具,它为你提供了操作的网络部分,其中记录了所有数据传输状态。你可以在那里检查SignalR错误。日志上的信息将非常详细和有用。
这是一个使用Chrome浏览器调试的示例,适用于通过Chrome调试工具查看SignalR错误的人:
Download Full Image Size
如果你有其他问题请告诉我。
有关更多信息,请访问:信号R错误
myzjeezk2#
好吧,经过2个半小时的艰难调试,我终于发现了真相,意识到奇怪的是,无论我如何更改服务器端代码,隐藏的机制或功能都没有以某种方式同步,直到我意外地重新构建了项目,并等待IIS Express再次预热。
这不是SignalR的错,我认为是Visual Studio的错。每次我对Hub类做一些修改,我都必须重新构建服务器端项目。就是这样。我不得不说,这真的很痛苦,尽管我不知道为什么会发生这种情况--也许这是因为我的解决方案由WinRT和ASP.NET项目组成,它们沿着得不好?我不知道。
顺便说一句,我会附上一个链接到一个职位,其中类似的“重建”问题确实发生在别人身上。
http://forum.kooboo.com/yaf_postst2250_How-to-use-SignalR-in-a-Module.aspx
现在的解决方案不仅仅是简单的--只是去重建。