SL4 / WCF无法使用HTTPS

时间:2011-05-05 20:24:26

标签: silverlight wcf ssl https

我需要帮助尝试在生产服务器上使用https获取SL4 / WCF应用程序。该应用程序完美地使用http,并使用https它将加载xap并显示登录页面,但在尝试进行身份验证或进行wcf调用时出现一般错误:

“操作期间发生异常,导致结果无效。检查InnerException以获取异常详细信息。“

“[Async_ExceptionOccurred] 参数: 调试资源字符串不可用。通常,密钥和参数提供了足够的信息来诊断问题。见http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.60310.0&File=System.dll&Key=Async_ExceptionOccurred

环境是SL4 - MVVM,IIS7,基本WCF,Silverlight故障行为类以及使用Asp.net成员资格提供程序的身份验证。网站和服务位于同一目录中,因此我认为没有跨域问题 - 该网站使用http工作并且fiddler没有显示缺少clientaccesspolicy.xml文件 - 尽管我仍然安装了该文件。填充xap后,Fiddler不提供任何线索或流量。我也可以在使用https时直接浏览并访问该服务。

任何帮助或建议将不胜感激。 谢谢, 最大

这是web.config:

                                                                                                                                         

<extensions>
  <behaviorExtensions>
    <add name="silverlightFaults" type="Accruit.RidgeLine.Behaviors.SilverlightFaultBehavior, Accruit.RidgeLine.Behaviors, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </behaviorExtensions>
</extensions>

<behaviors>
  <serviceBehaviors>
    <behavior name="silverlightBehavior">
      <serviceMetadata httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" httpsHelpPageEnabled="true" />
    </behavior>
    <behavior name="">
      <serviceMetadata httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" httpsHelpPageEnabled="true" />
    </behavior>
  </serviceBehaviors>

  <endpointBehaviors>
    <behavior name="SilverlightFaultBehavior">
      <silverlightFaults />
    </behavior>
  </endpointBehaviors>
</behaviors>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

<services>
  <service name="Accruit.RidgeLine.Web.BankingService" behaviorConfiguration="silverlightBehavior" >
    <!-- Endpoint for Standard SOAP clients -->
    <endpoint address="" contract="Accruit.RidgeLine.Web.IBankingService"  
              binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_IBankingService"/>
    <!-- Endpoint for Silverlight clients -->
    <endpoint address="SilverlightEndPoint" contract="Accruit.RidgeLine.Web.IBankingService"
              binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_IBankingService_SilverlightEndPoint" 
              behaviorConfiguration="SilverlightFaultBehavior" />
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
  </service>
</services>


<client>
  <endpoint address="https://domainname.com/BankingService.svc"
      binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_IBankingService"
      contract="BankingService.IBankingService" name="BasicHttpBinding_IBankingService" />

  <endpoint address="https://domainname.com/BankingService.svc/SilverlightEndPoint"
      binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_IBankingService"
      contract="BankingService.IBankingService" name="basicHttpBinding_IBankingService_SilverlightEndPoint" />
</client>

2 个答案:

答案 0 :(得分:0)

除了我的评论之外,还有一些要检查的内容:

Great link here,请查看sladapters帖子。

这是最近刚刚推出的Silverlight Deployment Guide,可从MS获得。那里非常坚固的东西。

我遇到的很多问题都与为ServiceReference.ClientConfig文件中的本地计算机编码的端点地址有关。我保留了一份开发副本&amp;我的解决方案中的部署副本。鉴于您可以导航到该服务,它可能在这里引用错误...

答案 1 :(得分:0)

应用程序是使用Silverlight Web项目中包含的wcf服务构建的,绑定uri也是使用Uri(Application.Current.Host.Source,“..”)以编程方式覆盖的。我将wcf服务分离出来进入他们自己的项目并删除了uri代码(这导致了防火墙和dsn访问问题,因为443被转发到另一个端口)。我仍然遇到使用自签名证书的问题,所以我们不得不在之前购买有效的证书。 Silverlight客户端将与wcf服务进行通信。