【问题标题】:Get detailed error for exception in SignalR Core Hub method execution获取 SignalR Core Hub 方法执行中异常的详细错误
【发布时间】:2017-10-16 08:59:51
【问题描述】:

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

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

如何获得详细的错误报告(发生错误的行和文件),而无需手动调试和使用单步检查并检查代码引发异常的位置。

在网上我找到了很多使用EnableDetailedErrors的代码

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

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

【问题讨论】:

    标签: signalr asp.net-core-signalr


    【解决方案1】:

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

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

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

    实施上述设置将在浏览器控制台中显示更详细的消息,您也可以在 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']);
    

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

    【讨论】:

    • 这应该是正确的答案,因为@Pawel 的答案已经过时了。
    • options.EnableDetailedErrors = true;是我要找的
    【解决方案2】:

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

    【讨论】:

    • 现在呢?
    • 刚碰到这个,好像还是不行
    猜你喜欢
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多