0

我已经尝试了很多关于这个的技巧,但我无法让它发挥作用。在客户端我有:

<configuration>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="[binding_name]">
                <security mode="Transport" />
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="/[service_name].svc"
                binding="basicHttpBinding"
                bindingConfiguration="[binding_name]"
                contract="[contract_name]"
                name="[endpoint_name]" />
    </client>
</system.serviceModel>
</configuration>

在服务器上:

...<service name="[service_name]">
    <endpoint address=""
              binding="basicHttpBinding"
              bindingConfiguration="[binding_name]"
              contract="[contract_name]"
              name="[endpoint_name]"/>
    <endpoint contract="IMetadataExchange"
              binding="mexHttpsBinding"
              address="mex" />
  </service><behaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors><bindings>
  <basicHttpBinding>
    <binding name="[binding_name]">
      <security mode="Transport">
        <transport clientCredentialType ="None"/>
      </security>
    </binding>
  </basicHttpBinding>...

一个潜在的线索是,当我导航到 https://[server_name]/[service_name].svc?wsdl 时,我看到位置正确

<wsdl:import namespace="http://[namespace]" location="https://[server_name]/[service_name].svc?wsdl=wsdl0"/>

但不正确

<wsdl:port name="[binding_name]" binding="tns:[binding_name]"> <soap:address location="http://[machine_name]/[service_name].svc"/> </wsdl:port>

注意 location=" http ://[ machine_name ]/[service_name].svc" 这是预期的吗?如果不是,可能是什么问题?

我还确保服务器配置中的 [service_name] 是服务实现的 FQN。在我在服务器上启用 SSL 并将安全模式更改为传输等之前,一切都按预期工作。

4

1 回答 1

0

我的问题是,虽然 service_name in<service name="[service_name]">是服务实现的正确 FQN,但它与 *.svc 文件中的 Service 属性不匹配。在这种情况下,WCF 似乎为端点创建了一个默认名称,类似于 BasicHttp_service_name。这一直有效,直到启用 SSL 并正在寻找 URL 以 https 开头的端点。

至于 machine_name 问题,是因为我没有在 IIS 站点绑定中设置 https 的主机名。

于 2013-06-24T23:59:03.710 回答