关于signalR dotnet核心的问题

时间:2018-05-24 14:47:02

标签: asp.net-core asp.net-core-signalr

问题

情境:

  • SignalR版本1.0.0 RC1 Final
  • DotNet Core 2.0
  • Tipical:User - Posts - Comments models。

问题:

当我通过websocket发送模型时,静默失败(没有消息发送给客户端)。如果我设置为null导航属性,它可以正常工作:

    _context.Posts.Add(model);
    _context.SaveChanges();

    model.User.Posts = null;  // <- removing this line fails silently

    _hub.Clients.All.SendAsync("AddAsync", model);

我如何诊断发生了什么?有人知道是什么原因?

<小时/>

一些不必要的代码详细信息

User.cs

public Guid Id { get; set; }
// ...
public virtual List<Post> Posts { get; set; } = new List<Post>();

Post.cs

public Guid Id { get; set; }
// ...
public virtual User User { get; set; }

PostsController.cs

private IHubContext<PostsHub> _hub;
private DatabaseContext _context;

public PostsController(IHubContext<PostsHub> hub)
{
    _hub = hub;
}

// ...

[HttpPost]
public async Task<ActionResult> PostAsync([FromBody] Post model)
{
    // ...

    _context.Posts.Add(model);
    _context.SaveChanges();

    model.User.Posts = null;

    _hub.Clients.All.SendAsync("AddAsync", model);

    // ...
}

1 个答案:

答案 0 :(得分:1)

使用json转换,将模型序列化为json,并在发送之前再次将其反序列化为Post对象。 如果有错误,它应该在那里弹出,因为如果有依赖循环,那么json convert应该抛出异常