【问题标题】:How to eneble SSL for silverlight application calling a WCF service如何为调用 WCF 服务的 silverlight 应用程序启用 SSL
【发布时间】:2014-07-17 15:36:37
【问题描述】:

我有一个 ASP.NET 应用程序,它托管一个调用 WCF 服务的 silverlight 4 应用程序。

在 asp.net 应用程序的 web.config 文件中,我有以下配置

    <system.serviceModel>
  <bindings>
      <customBinding>
        <binding name="MyBindingName">
          <binaryMessageEncoding/>
          <httpTransport/>
        </binding>
      </customBinding>
    </bindings>
    <services>
      <service name="MyBindingName.Web.GetData">
        <endpoint address="" binding="customBinding" bindingConfiguration="MyBindingName" contract="MyBindingName.Web.GetData"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyBindingName.Web.GetData">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
          <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
        </behavior>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>

在 Silverligh 应用程序中,完整的 ServiceReferences.ClientConfig 文件 xml 如下。

<configuration>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="Data1" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
                <security mode="Transport" />
            </binding>
            <binding name="Data1" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
                <security mode="Transport" />
            </binding>
        </basicHttpBinding>
        <customBinding>
            <binding name="Binding_GetData">
                <httpsTransport></httpsTransport>
                <binaryMessageEncoding />
                <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
            </binding>
        </customBinding>
    </bindings>
    <client>

        <endpoint address="http://localhost/myApp/Webservice/Data.asmx"
            binding="basicHttpBinding" bindingConfiguration="Data1"
            contract="ServiceReference1.Data1" name="Data1" />
        <endpoint address="http://localhost/myApp/Webservice/GetData.svc"
            binding="Binding_GetData" bindingConfiguration="Binding_GetData"
            contract="GetData.GetData" name="Binding_GetData" />
    </client>
</system.serviceModel>  

我现在想为整个应用程序启用 SSL。该应用程序应该可以在 https 和普通 http 上运行。

我已经按照以下链接中提到的步骤进行操作,但没有成功。 http://www.codeproject.com/Articles/36705/simple-steps-to-enable-HTTPS-on-WCF-WsHttp-bindi

【问题讨论】:

    标签: asp.net wcf ssl silverlight-4.0


    【解决方案1】:

    basicHttpBinding 是一个选项吗?

    我在我的 SL5/WCF 应用程序中使用 SSL,下面是我在 web.config 中设置 SSL 绑定的方法。请注意,我将 httpGetEnabled 和 httpsGetEnabled 都设置为 true。

    <bindings>
        <binding name="SecureHttpEndpointBinding">
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
        </binding>
    </bindings>
    
    <services>
      <service name="Reporting.Web.Services.ReportingService">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="SecureHttpEndpointBinding" name="basicHttpEndpoint" contract="Reporting.Web.Services.IReportingService" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    

    创建服务引用后,我手动修改了 Silverlight 部分中的 ServiceReferences.ClientConfig。注意端点地址!

    <configuration>
      <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="basicHttpEndpoint">
              <security mode="Transport" />
            </binding>
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="../Services/ReportingService.svc"
            binding="basicHttpBinding" bindingConfiguration="basicHttpEndpoint"
            contract="ReportingServiceReference.IReportingService" name="basicHttpEndpoint"      />
        </client>
      </system.serviceModel>
    </configuration>
    

    【讨论】:

    • 我在 收到错误“不允许使用模式属性”,有没有我必须首先引用的 dll?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2010-09-30
    相关资源
    最近更新 更多