【问题标题】:Is it possible to catch/log SignalR Serialization issues?是否可以捕获/记录 SignalR 序列化问题?
【发布时间】:2013-05-22 10:52:07
【问题描述】:

我用谷歌搜索了很多,但没有找到答案......

我需要记录从客户端发送到服务器集线器的消息何时因任何原因无法反序列化...... signalR 在幕后发生了很多事情(当然不是......可以轻松使用 chrome/FF 开发人员模式看看客户端 POV 发生了什么),但我想在集线器上记录序列化失败..

有人实现了类似的东西吗?

【问题讨论】:

标签: asp.net signalr


【解决方案1】:

回答我自己的问题...这确实有帮助

http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-net-client#handleerrors

没有完全捕获服务器端的错误,但返回给客户端的错误详细信息更加详细,让我可以轻松查看类型不匹配..

var hubConfiguration = new HubConfiguration();
hubConfiguration.EnableDetailedErrors = true;
RouteTable.Routes.MapHubs(hubConfiguration);

【讨论】:

    【解决方案2】:

    要在服务器上记录从客户端发送到服务器的消息的反序列化异常,您可以装饰 SignalR 中包含的 DefaultParameterResolver。

    创建一个修饰的 IParameterResolver 记录异常并调用 DefaultParameterResolver

        public class LoggedParameterResolver : IParameterResolver 
        {
           private readonly DefaultParameterResolver _parameterResolver;
           private readonly ILogger _logger;
    
           public LoggedParameterResolver(DefaultParameterResolver parameterResolver, ILogger logger)
           {
            _parameterResolver = parameterResolver;
            _logger = logger;
           }
    
           public IList<object> ResolveMethodParameters(MethodDescriptor method, IList<IJsonValue> values)
           {
            try
            {
                return _parameterResolver.ResolveMethodParameters(method, values);
            }
            catch (Exception exception)
            {
                _logger.LogException(exception);
                throw;
            }
          }
        }
    

    并配置 SignalR 以使用它

    IParameterResolver loggedParameterResolver = new LoggedParameterResolver(new DefaultParameterResolver(), logger);
    GlobalHost.DependencyResolver.Register(typeof(IParameterResolver),()=> loggedParameterResolver );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多