【问题标题】:Calling webservices from Silverlight 3 when running out-of-browser在浏览器外运行时从 Silverlight 3 调用 Web 服务
【发布时间】:2009-08-28 12:02:54
【问题描述】:

我们有这个不错的 Silverlight 3 应用程序,它与运行一些 WCF Web 服务的 Web 服务器进行通信。它在浏览器中运行时运行良好,但很快我们尝试在浏览器之外运行它,它不会调用我们的 web 服务。

我试图找出发生这种情况的原因,但找不到任何解释。

将调试器附加到 sllauncher.exe 进程时,我可以单步执行代码,并且可以看到调用了 (Begin)Async 方法。但是使用 Fiddler 我可以看到服务器根本没有流量!

我还验证了端点地址正确,并且端点配置正确(毕竟在浏览器中运行时它可以工作)。

所以我想知道问题的原因是什么以及如何调试它。有什么想法吗?

编辑: 我注意到我们的应用程序也不能在 Internet Explorer 中运行。但它在 Firefox 中运行良好!这并不令人意外,因为 out of browser 应用程序嵌入了 Internet Explorer,但它可能是我们问题的线索。

那么,您知道在 Firefox 和 Internet Explorer 中托管 silverlight 之间有什么区别吗?

【问题讨论】:

    标签: asp.net wcf silverlight silverlight-3.0


    【解决方案1】:

    也许值得在您的 Web 服务调用周围尝试一下,看看抛出了什么异常以帮助进一步调试此问题,因为据我所知,在浏览器中运行良好的 Web 服务应该可以运行 OOB。

    【讨论】:

      【解决方案2】:

      我们在 OOB 方面遇到的问题都与本地机器设置有关。如果您在代理后面,请暂时关闭它。还要检查您的防火墙以确保它允许 Web 服务流量通过。

      为了便于调试,如果您还没有这样做,请像这样包装您的服务调用:

      using System.Net;
      
      if (NetworkInterface.GetIsNetworkAvailable()) { doSomethingAsync(); }
      else { //Report the error or show status in UI }
      

      【讨论】:

      • 好点,但我认为这两者都不是我的问题的原因。我尝试在本地和远程服务器上运行 web 服务,但行为是相同的。我也尝试调用 GetIsNetworkAvailable 但它返回 true。
      • 啊...有一些关于活动 X 控件等的 IE 设置可能导致 SL OOB 应用程序无法运行。如果可以,请将所有 IE 设置恢复为默认值,然后尝试运行它。
      【解决方案3】:

      它适用于 Firefox 而不是 IE,因为 Firefox 更愿意接受临时证书。您正在运行认证服务器吗?

      fiddler 没有流量的原因是因为

      1. 您正在访问的 HTTPS 地址上没有 clientaccesspolicy.xml。
      2. 您正在从 Visual Studio 中运行 Silverlight 应用程序,因此从 Visual Studio 中运行托管 SL 客户端程序的网站,ASP 开发服务器会阻止进行某些调用,尤其是如果您的 Web 服务地址与该网站托管在某些端口上,并且某些端口没有响应,导致 fiddler 最奇怪的行为完全无所作为。

      无论哪种情况,SL 应用程序在使用 HTTPS 时未联系 Web 服务器的行为都是由于托管环境限制(尝试在 IIS 中部署)或客户端愿意接受证书加密策略。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-03
        • 2012-01-31
        相关资源
        最近更新 更多