WSA寻址c#WCF

我有一个客户想要使用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寻址)

由于我正在进行文件传输,因此我在Web配置中使用了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 = "";
-----
       }
chj950109 回答:WSA寻址c#WCF

我们可以在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!";

请随时告诉我是否有什么我可以帮助的。

本文链接:https://www.f2er.com/3170032.html

大家都在问