如何在 SignalR 中返回具有自己的类属性的对象

How to return an object which has a property of its own class in SignalR?

本文关键字:自己的 属性 对象 SignalR 返回      更新时间:2023-09-26

这似乎是一个Microsoft错误。如果我尝试从客户端调用的服务器中的函数返回一个对象,并且该对象对其自己的函数具有循环引用:

public class User
{
   public User OtherUser;
}
public User GetUser()
{
  User user = new User();
  user.OtherUser = new User();
  user.OtherUser.OtherUser = user;
  return user.OtherUser;
}

再次调用服务器功能,然后集线器不再响应进一步的呼叫,有人遇到过这种行为吗?我变成了使用对象的 id 而不是对对象的引用来解决这个问题。

可以考虑使用替代模型,同时使用 SignalR 和 Web API。SignalR 用于将数据推送到客户端,对吧?如果客户不再在那里怎么办?在这种情况下,将大型对象从服务器推到不会被拾取的空隙中是没有意义的。

另一种方法是使用 SignalR 推送小块信息(例如用户 ID),然后让浏览器回调服务(因此是 Web API),以便在准备就绪时获取更大的有效负载。

我认为这与循环引用和 Json 的问题有关。

序列化类型为"SubSonic.Schema"的对象时检测到循环引用。数据库列"。