WSA-адресация c # WCF - PullRequest
       0

WSA-адресация c # WCF

0 голосов
/ 04 ноября 2019

У меня есть клиент, который хочет использовать WSA Addressing Header.

<wsse:UsernameToken>
                <wsse:Username>DocumentExchangeDEVUnitTest</wsse:Username>
                <wsse:Password wsse:Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">abc123</wsse:Password>
</wsse:UsernameToken>

Я создал серверную службу. Я запутался, как сделать службу, которая может принять вышеупомянутый запрос (адресация WSA)

Поскольку у меня есть передача файлов, я использовал MTOM и wshttpbinding в веб-конфигурации

<wsHttpBinding>
        <binding name="WsBinding" messageEncoding="Mtom" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647"  transactionFlow="false" textEncoding="utf-8"   >

          <security mode="Transport"  >
            <transport clientCredentialType="None"/>
            </security>
          <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147473647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
        </binding>
   </wsHttpBinding>

Послеэто услуга

   [WebInvoke(Method = "POST", UriTemplate = "UploadDoc")]
        [WebMethod(Description = "Save documents to System")]

        public void UploadDocGen(RemoteFileInfo remoteFileInfo)
        {
            string UserName = "";
-----
       }

1 Ответ

0 голосов
/ 05 ноября 2019

Мы могли бы использовать Basichttpbinding с TransportWithMessageCredential режимом безопасности для создания службы WCF и получения конкретного запроса.

BasicHttpBinding binding = new BasicHttpBinding();
            binding.MessageEncoding = WSMessageEncoding.Mtom;
            binding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
            binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

Конфигурация.

<basicHttpBinding>
            <binding name="mybinding" messageEncoding="Mtom">
              <security mode="TransportWithMessageCredential">
                <message clientCredentialType="UserName"/>
              </security>
            </binding>
          </basicHttpBinding>

Результат.
enter image description here
Для передачи больших файлов BasicHttpBinding также поддерживает кодирование MTOM, см. Приведенный ниже документ.
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/large-data-and-streaming
После того, как мы создали вышеупомянутую службу WCF, на стороне клиента мы должны предоставить username/password для доступа к службе, заголовок SOAP, как вы отправили.

ServiceReference1.ServiceClient client = new ServiceClient();
            client.ClientCredentials.UserName.UserName = "administrator";
            client.ClientCredentials.UserName.Password = "abcd1234!";

Не стесняйтесьдайте мне знать, если есть что-нибудь, с чем я могу помочь.

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