如何在ASP.NET Core中禁用响应解压缩? [英] How to disable response decompression in ASP.NET Core?

查看:27
本文介绍了如何在ASP.NET Core中禁用响应解压缩?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要禁用响应压缩。我有.NET 4.5版本的Web.config,但我现在需要.NET Core 2.x。

<customBinding>
    <binding name="BasicHttpBinding_Service">
        <textMessageEncoding messageVersion="Soap11" />
        <httpsTransport decompressionEnabled="false" />
    </binding>
</customBinding>

我的Web服务不支持压缩响应,但我仍然收到错误:

System.ServiceModel.ProtocolException:‘响应消息的内容类型APPLICATION/x-gZIP与绑定的内容类型(Text/XML;Charset=utf-8)不匹配。如果使用自定义编码器,请确保正确实现IsContent TypeSupport方法。响应的前653个字节为:’?‘

推荐答案

ASP.NET核心有documentation on compression。如您所见,ASP.NET Core不再使用web.config。如果您在IIS中托管您的ASP.NET Core应用程序,则仍会使用一些web.config设置,但只使用与通用IIS托管相关的设置,而不是特定于应用程序的设置(动态压缩是IIS的一项功能,因此该设置仍然相关,但ASP.NET Core中不再使用过去与ASP.NET应用程序相关的其他web.config设置)。遗憾的是,我目前找不到有关哪些web.config设置仍然相关的文档。

总之,ASP.NET Core默认使用Kestrel Web服务器,该服务器是在代码中配置的。对上面链接的文档中的示例稍作修改,我相信这可能会奏效:

public void ConfigureServices(IServiceCollection services)
{
    services.AddResponseCompression(options =>
    {
        var gzip = options.Providers.OfType<GzipCompressionProvider>().FirstOrDefault();
        if (gzip != null)
        {
            options.Providers.Remove(gzip);
        }
    });
}

但这取决于压缩来自哪里。如果您的ASP.NET Core应用程序和Internet之间有一个反向代理(例如IIS,但可能是nginx、haproxy等),它们可能正在进行压缩,因此您需要了解您的应用程序体系结构,并在正确的位置将其关闭。

这篇关于如何在ASP.NET Core中禁用响应解压缩?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆