asp.net-core - 关于signalR dotnet core的问题
问题描述
问题
设想:
- SignalR 版本 1.0.0 RC1 最终版
- 点网核心 2.0
- 典型:用户 - 帖子 - 评论模型。
问题:
当我通过 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);
// ...
}
解决方案
使用 json 将模型序列化为 json 并在发送之前再次将其反序列化为 Post 对象。如果有错误它应该在那里弹出,因为如果有依赖循环 json convert 应该抛出异常
推荐阅读
- c# - 在 EF 核心中具有唯一性的备用键和 HasIndex 之间的真正区别是什么?
- sql-server - 如何在 SQL Server 中根据更新查询设置触发器?
- perl - 两次打开压缩文件并使用 perl 读取
- python - 将一个类文件中的变量调用到python3中的另一个文件
- python - 子包中模块的 Python 命名约定
- jquery - 带有灯箱的光滑轮播以显示带有背景图像的 div
- java - 通过向广播接收器发送唯一 id 来取消多个通知
- git - 如何让 git 将 url 重定向到本地路径?
- python - AttributeError:模块“scipy.stats”没有属性“signaltonoise”
- python - EventHubError Sender Reconnect failed: Authorizacion timeout