Как создать SecurityBindingElement в Dot Net Core 2.1 - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь использовать сервис wcf soap в проекте dot net core web api.поскольку ядро ​​dot net не поддерживает настройку через файл web.config.все настройки wcf мне нужно сделать только в коде, но я не могу найти эквивалентный код в ядре dot net 2.1 для нижеприведенной конфигурации

<customBinding>
   <binding name="SecureBinding">
  <security includeTimestamp="false"  
   authenticationMode="UserNameOverTransport" />
   <textMessageEncoding messageVersion="Soap11">
     <readerQuotas maxDepth="128" maxStringContentLength="2147483647" 
   maxArrayLength="2147483646" maxBytesPerRead="4096" 
   maxNameTableCharCount="16384000" />
   </textMessageEncoding>
  <httpsTransport  maxBufferPoolSize="524288" maxBufferSize="2147483647" 
   maxReceivedMessageSize="2147483647" requireClientCertificate="true"/>
</binding>

эквивалентный код в ядре dot net написан такдалеко

 var messegeElement = new TextMessageEncodingBindingElement
        {
            MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap11),
            ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas
            {
                MaxDepth = 128,
                MaxStringContentLength = int.MaxValue,
                MaxArrayLength = int.MaxValue,
                MaxBytesPerRead = 4096,
                MaxNameTableCharCount = 16384000,

            }
        };

        HttpsTransportBindingElement httpsTransport = new HttpsTransportBindingElement
        {
            MaxBufferSize = int.MaxValue,
            MaxReceivedMessageSize = int.MaxValue,
            RequireClientCertificate = true,
            AuthenticationScheme = AuthenticationSchemes.Ntlm,
            TransferMode = TransferMode.Buffered
        };

        CustomBinding customBinding = new CustomBinding(messegeElement, httpsTransport);

как написать элемент защиты, например

 SecurityBindingElement sbe = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
 sbe.IncludeTimestamp = false;

Я искал, но обнаружил, что SecurityBindingElement еще не доступен в ядре dot net.есть ли обходной путь к этому?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...