获取SignalR Core Hub方法执行中的异常的详细错误

时间:2017-10-16 08:59:51

标签: signalr asp.net-core-signalr

当我调用Hub方法时,我得到帧响应:

  

{" invocationId":" 1","输入":3,"错误":"发生错误更新   条目。有关详细信息,请参阅内部异常。"}

如何在不手动调试和使用跳过的情况下获取详细的错误报告(发生错误的行和文件),并检查代码引发异常的位置。

在网上我发现很多代码使用了EnableDetailedErrors

services.AddSignalR(options => 
        {
            options.Hubs.EnableDetailedErrors = true;
        });

但是选项(至少在版本1.0.0-alpha2-final中)没有属性Hub。

2 个答案:

答案 0 :(得分:3)

目前尚未实现启用详细错误的选项。有an issue跟踪此信息。我的建议是打开服务器端的日志记录 - 原始异常将记录在那里。

答案 1 :(得分:0)

这是您需要在核心中执行的操作(不确定添加的确切版本):

        // signalR
        services.AddSignalR(options =>
        {
            if (Environment.IsDevelopment()) {
                options.EnableDetailedErrors = true;
            }
        });

不用说,出于生产安全考虑禁用此功能的原因是,出于安全考虑,请注意,如果在生产环境中启用此功能,则可能会暴露出您不希望黑客看到的内容。

这将在浏览器控制台中显示更详细的消息,您也可以在websocket调试中查看:

enter image description here


快速提示:

我现在在ASPNetCore上设置了两次SignalR,我认为两次都犯了相同的错误:

// from typescript client arguments are passed like this
this.hubConnection.invoke('SendMessage', 'simon', 'hello');

// not like this
this.hubConnection.invoke('SendMessage', ['simon', 'hello']);

invoke也将等待响应,而send将不等待响应。因此,使用send可能看不到错误。