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核心Web API中为messagepack内容类型启用LZ4压缩_Asp.net Core_Asp.net Core Webapi_Msgpack_Lz4 - Fatal编程技术网

Asp.net core 如何在Asp.net核心Web API中为messagepack内容类型启用LZ4压缩

Asp.net core 如何在Asp.net核心Web API中为messagepack内容类型启用LZ4压缩,asp.net-core,asp.net-core-webapi,msgpack,lz4,Asp.net Core,Asp.net Core Webapi,Msgpack,Lz4,我正在尝试在我正在处理的.net核心Web API项目上启用MessagePack内容类型 经过一些研究,安装了这个软件包,并在启动文件中添加了以下代码。很简单!现在我可以通过我的API看到msgpack内容 services.AddMvc().AddMessagePackFormatters(c=> { c、 FormatterResolver=ContractlessStandardResolver.Instance; c、 SupportedContentTypes.Add(“应用程序/x

我正在尝试在我正在处理的.net核心Web API项目上启用MessagePack内容类型

经过一些研究,安装了这个软件包,并在启动文件中添加了以下代码。很简单!现在我可以通过我的API看到msgpack内容

services.AddMvc().AddMessagePackFormatters(c=>
{
c、 FormatterResolver=ContractlessStandardResolver.Instance;
c、 SupportedContentTypes.Add(“应用程序/x-msgpack”);
c、 支持扩展。添加(“mp”);
});
现在,我想在上面应用LZ4压缩,以减少中提到的有效负载大小。我找不到任何nuget软件包来添加此功能,也找不到插件LZ4压缩的方法。在一些博客中,我读到MessagePack内置了LZ4压缩。我不明白这意味着什么,关于这方面的文档也很少

我是这方面的新手,所以非常感谢您的帮助


谢谢

您必须编写一个自定义媒体类型格式化程序,因为压缩在不同的模块中使用。您必须使用
LZ4MessagePackSerializer
而不是
MessagePackSerializer
。用法是一样的。此外,建议的MIME类型是
应用程序/msgpack

请参见以下基本示例:

公共类MsgPackMediaTypeFormatter:BufferedMediaTypeFormatter
{
公共MsgPackMediaTypeFormatter()
{
添加(新的MediaTypeHeaderValue(“应用程序/msgpack”);
}
公共覆盖布尔CanReadType(类型)
{
return!type.isastract&!type.IsInterface&&type.IsPublic;
}
公共重写bool CanWriteType(类型)
{
return!type.isastract&!type.IsInterface&&type.IsPublic;
}
公共重写对象ReadFromStream(类型类型、流readStream、HttpContent内容、IFormatterLogger formatterLogger)
{
返回LZ4MessagePackSerializer.NonGeneric.Deserialize(类型,readStream);
}
public override void WriteToStream(类型类型、对象值、流writeStream、HttpContent)
{
LZ4MessagePackSerializer.NonGeneric.Serialize(类型、writeStream、值、MessagePack.Resolver.ContractlessStandardResolver.Instance);
}
}

我就是这么做的!!谢谢你的回答。