【发布时间】:2020-08-05 16:00:41
【问题描述】:
假设我想像这样添加一个键入的HttpClient:
services.AddHttpClient<ISomeService, SomeService>(c =>
{
c.BaseAddress = new Uri(someUrl);
});
发送请求时是否可以强制它使用Newtonsoft.Json进行序列化?最好以类似的方式为控制器添加它:
services.AddControllers()
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
});
所以当我像这样使用HttpClient 实例时:await httpClient.PostAsJsonAsync(testDto),Newtonsoft.Json 序列化器被使用而不是内置的。
编辑:刚刚注意到我使用的PostAsJsonAsync(...) 和GetFromJsonAsync(...) 是System.Net.Http.Json 中定义的扩展方法,这基本上使整个问题无效。
【问题讨论】:
-
是的,阅读标题我的第一个想法是“世界上到底是什么类型的
HttpClient”?您正在做的是添加一个输入的包装器,实际的HttpClient实例仍然只是一个普通的实例——顺便说一句,它与所有其他“输入的HttpClient”映射共享。 -
问题令人困惑,但他基本上问的是在
HttpClientExtensions命名空间中,如何为PostAsJsonAsync和ReadAsAsync方法设置默认序列化程序。 -
@Slowacki,这正是我所说的,一个共享
HttpClient,以及每种类型的一大堆映射到不同的代表。没有“输入HttpClient”这样的东西。 -
@Andy 是的,这主要是关于:) 对不起,我会试着澄清一下这个问题。