ASP.NET Core Отключить распаковку ответов - PullRequest
0 голосов
/ 30 ноября 2018

Мне нужно отключить сжатие ответа.У меня есть .NET 4.5 версия web.config, но мне нужно в .NET CORE 2.x сейчас.

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

У меня есть веб-сервис, который не поддерживает сжатый ответ, и я все еще получаю ошибку: System.ServiceModel.ProtocolException: 'Тип содержимого application / x-gzip ответного сообщения не соответствует типу содержимого привязки (text / xml; charset = utf-8).При использовании пользовательского кодировщика убедитесь, что метод IsContentTypeSupported реализован правильно.Первые 653 байта ответа были: '?'

Большое спасибо

1 Ответ

0 голосов
/ 30 ноября 2018

ASP.NET Core имеет документацию по сжатию .Как видите, ASP.NET Core больше не использует web.config.Если вы размещаете приложение ASP.NET Core в IIS, то некоторые параметры web.config по-прежнему используются, но только те, которые относятся к общему хостингу IIS, но не для конкретного приложения (динамическое сжатие является функцией IIS, поэтому этот параметр по-прежнему актуален, но другие параметры web.config, которые раньше использовались в приложениях ASP.NET, больше не используются в ASP.NET Core).К сожалению, на данный момент я не могу найти документацию о том, какие настройки web.config по-прежнему актуальны.

В любом случае ASP.NET Core по умолчанию использует веб-сервер Kestrel, настроенный в коде.Делая небольшую модификацию образца в документации, которую я связал выше, я считаю, что это может сработать:

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 и Интернетом (например, IIS, но, возможно, nginx, haproxy и т. Д.), Они могут выполнять сжатие, поэтому вам нужно понять архитектуру вашего приложения и выключить его справа.место.

...