Web服务不同的内部soap:address。如何调用方法

时间:2018-10-08 05:05:44

标签: c# web-services

我正在尝试使用c#调用Web服务方法,并且得到响应

  

https://sub.example.com/Service/Services.svc上没有端点可以接受该消息。这通常是由不正确的地址或SOAP操作引起的。有关更多详细信息,请参见InnerException(如果存在)。

内部异常如下

  

远程服务器返回错误:(404)找不到。

我认为这是由于代理或其他问题。当我使用Visual Studio添加引用时,它将自动生成肥皂地址

  

http://computername.local/Service/Service.svc

所以关键的问题是服务可以通过外部不同的地址获得,但是IIS响应使用内部地址。

我尝试使用不同的方法将Web服务方法与代理地址建立连接,但这没有用。有没有办法解决这个问题,或者服务提供商需要更改IIS配置?

配置如下

<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceLibrary.Service1Behavior">

      <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>

      <serviceDebug includeExceptionDetailInFaults="True" />
      <serviceAuthorization principalPermissionMode="None" />
    </behavior>
  </serviceBehaviors>
</behaviors>


<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBindingConfiguration" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
      <security mode="None" />
    </binding>
  </basicHttpBinding>
</bindings>

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

使用http访问站点时,该服务将返回IP或名称,与地址栏中的相同。但是,使用https服务访问时会返回计算机名称。

1 个答案:

答案 0 :(得分:0)

因此事实证明,绑定是此方法不起作用的原因

<binding name="BasicHttpBindingConfiguration" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
  <security mode="None" />
</binding>

安全模式错误,应该是

  

安全模式=“运输”

如果需要在http和https一侧添加内容,则需要添加多个绑定。

How can I combine the WCF services config for both http and https in one web.config?