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

Mak*_*kla 3 signalr asp.net-core-signalr

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

{"invocationId":"1","type":3,"error":"更新条目时出错。有关详细信息,请参阅内部异常。"}

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

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

services.AddSignalR(options => 
        {
            options.Hubs.EnableDetailedErrors = true;
        });
Run Code Online (Sandbox Code Playgroud)

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

Sim*_*ver 6

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

        // signalR
        services.AddSignalR(options =>
        {
            if (Environment.IsDevelopment()) {
                options.EnableDetailedErrors = true;
            }
        });
Run Code Online (Sandbox Code Playgroud)

不用说,在生产中默认禁用此功能的原因是出于安全原因。因此,请注意不要暴露您可能不希望“黑客”在您可能抛出的任何异常中看到的内容。

实现上述设置将在浏览器控制台中显示更详细的消息,您也可以在 websocket 调试选项卡中看到:

在此处输入图片说明


小建议:

我现在在 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']);
Run Code Online (Sandbox Code Playgroud)

invoke将等待响应,而send不会。因此,您可能看不到使用send.

  • 这应该是正确的答案,因为 @Pawel 的答案非常过时。 (2认同)

Paw*_*wel 5

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