启用S​​SL时服务的Silverlight 404

时间:2013-06-13 00:18:19

标签: wcf silverlight ssl

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

<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并将安全模式更改为传输等之前,一切都按预期工作。

1 个答案:

答案 0 :(得分:0)

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

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