Asp.net core 如何在asp.net core 3.1 web api中配置和使用MessagePack?
我已开始在我的asp.net core 3.1应用程序中使用MessagePack,但由于以下错误消息,它无法工作: 严重性代码说明项目文件行抑制状态 错误CS1503参数1:无法从转换 “MessagePack.Resolver.ContractlessStandardResolver”到 “MessagePack.MessagePackSerializerOptions”网关C:\Developments\POC\Gateway\Startup.cs 33处于活动状态Asp.net core 如何在asp.net core 3.1 web api中配置和使用MessagePack?,asp.net-core,asp.net-core-webapi,asp.net-core-3.1,msgpack,Asp.net Core,Asp.net Core Webapi,Asp.net Core 3.1,Msgpack,我已开始在我的asp.net core 3.1应用程序中使用MessagePack,但由于以下错误消息,它无法工作: 严重性代码说明项目文件行抑制状态 错误CS1503参数1:无法从转换 “MessagePack.Resolver.ContractlessStandardResolver”到 “MessagePack.MessagePackSerializerOptions”网关C:\Developments\POC\Gateway\Startup.cs 33处于活动状态 解决此编译问题的另一
解决此编译问题的另一种替代方法或解决方案是什么?正如@Michael所说,MessagePackOutFormatter背后需要的是
MessagePackSerializerOptions
类型,当前错误的发生是因为该类型是无契约标准解析程序,这是不一致的
因此,您只需按如下方式修改代码:
services.AddMvc().AddMvcOptions(option =>
{
option.OutputFormatters.Clear();
option.OutputFormatters.Add(new MessagePackOutputFormatter(ContractlessStandardResolver.Options));
option.InputFormatters.Clear();
option.InputFormatters.Add(new MessagePackInputFormatter(ContractlessStandardResolver.Options));
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
如果您将代码复制粘贴到此处而不是图像,这将非常有帮助。请尝试确定
messagepackoutformatter
的构造函数采用了哪些参数并进行填充。它似乎需要某种类型的选项类MessagePackSerializerOptions
。尝试先创建一个,然后提供解析程序。我按照您的建议进行了更改,但从服务器收到以下错误消息:“http请求响应的无效响应代码不可接受:不可接受”。下面的代码片段显示了客户端如何准备有效负载字符串和要提交的头:var httpContent=newstringcontent(payload,Encoding.UTF8,“application/x-msgpack”);