Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何在asp.net core 3.1 web api中配置和使用MessagePack?_Asp.net Core_Asp.net Core Webapi_Asp.net Core 3.1_Msgpack - Fatal编程技术网

Asp.net core 如何在asp.net core 3.1 web api中配置和使用MessagePack?

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处于活动状态 解决此编译问题的另一

我已开始在我的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”);