我试图通过使用JsConfigScope在JsConfig上为JsonServiceClient上的单个异步方法设置一个选项,但它似乎不起作用。我究竟做错了什么?还有另一种方法吗?
var client = new JsonServiceClient(baseUrl);
using (var scope = JsConfig.BeginScope())
{
scope.EmitCamelCaseNames = true;
return client.PostAsync<SomeResponse>(url, request);
}
答案 0 :(得分:1)
您不能将使用范围与异步请求一起使用,因为范围将在异步服务完成之前处理。您需要等待响应,即:
using (JsConfig.With(new Config { TextCase = TextCase.CamelCase }))
{
return await client.PostAsync<SomeResponse>(url, request);
}
您可以使用较低级别HTTP Utils在异步调用({3}}之外拆分请求序列化和响应反序列化。
否则,您可能会使用Response过滤器来处置范围配置,例如:
var scope = JsConfig.With(new Config { TextCase = TextCase.CamelCase });
var client = new JsonServiceClient(BaseUrl) {
ResponseFilter = httpRes => scope.Dispose()
};
return client.PostAsync<SomeResponse>(url, request);