gpt4 book ai didi

asp.net - 如何在 SignalR2 中设置 Json 序列化器设置?

转载 作者:行者123 更新时间:2023-12-01 03:51:42 25 4
gpt4 key购买 nike

我正在为 Ioc 使用 Signalr 2、Webapi 2 和 Ninject,我遇到了麻烦。

在 SignalR 2.0 中,您无法替换 JsonSerializer。
正如在这里回答的那样:
SignalR 2.0.0 beta2 IJsonSerializer extensibility

我需要忽略 json 中的 ReferenceLoopHandling,所以我使用了这段代码:

var serializerSettings = new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore
};
GlobalHost.DependencyResolver.Register(typeof(JsonSerializer), () => JsonSerializer.Create(serializerSettings));

一切正常,但我也从 Webapi 调用 signalR 客户端,除非我在应用程序启动中设置此代码,否则调用将不起作用:
GlobalHost.DependencyResolver = new NinjectSignalRDependencyResolver(NinjectIocConfig.Kernel);

现在可以从 webapi 调用 signalR 客户端,但不再使用 JSON 序列化设置。

我该如何解决这个问题或我做错了什么?

提前致谢

最佳答案

你看到我在本期结尾的讨论了吗?

https://github.com/SignalR/SignalR/issues/500#issuecomment-27480715

问题是 kernel.TryGet(serviceType)不会返回 null 而是返回默认实例,因为 singalR 现在使用的是具体类型,并且 Ninject 在实例化未注册的具体类型时不会失败。

您可以检查具体类型是否在内核中具有显式绑定(bind),如果没有则使用 SignalR Dep.resolver 中的值

kernel.GetBindings(serviceType).Any();

关于asp.net - 如何在 SignalR2 中设置 Json 序列化器设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21801038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com