使用基本授权调用 web soap webservice

Calling a web soap webservice with basic authorization

我在 visual studio 中创建了一个项目并向 wsdl 文件添加了一个服务引用。当我第一次尝试连接到我的服务时,我收到一条错误消息,告诉我我需要基本授权。

所以我关注了 this 问题。并将安全标签添加到我的 app.config。但是,现在我在 xml 中收到一个错误,该模式不是安全的有效属性,传输不是有效的元素。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
  <system.serviceModel>
    <bindings>
      <customBinding>
        <binding name="ConfigurationPortBinding">
          <mtomMessageEncoding messageVersion="Soap11" />
            <httpTransport />
            <security mode="TransportCredentialOnly">
              <transport clientCredentialType="Basic" />
            </security>
        </binding>
     </customBinding>
   </bindings>
   <client>
     <endpoint address="http://xxxx/CoreServices/ConfigurationService"
            binding="customBinding" bindingConfiguration="ConfigurationPortBinding"
            contract="ServiceReference1.Configuration" name="ConfigurationPort" />
   </client>
   </system.serviceModel>
</configuration>

知道我做错了什么吗?

好的,问题是我无法将安全标签添加到我的自定义绑定中,它是在我添加引用时自动创建的。所以我删除了 <customBinding><...></custombinding> 并添加了一个 <basciHttpBinding>,如 here 所述。之后我不得不更改 <endpoint>,以指向新的绑定。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup><.../></startup>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicAuthConf">
                    <security mode="TransportCredentialOnly">
                        <transport clientCredentialType="Basic" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://xxxx/CoreServices/ConfigurationService"
                binding="basicHttpBinding" bindingConfiguration="BasicAuthConf"
                contract="ServiceReference1.Configuration" name="ConfigurationPort" />
        </client>
    </system.serviceModel>
</configuration>