Asp.net 浏览器用完时从Silverlight 3调用Web服务

Asp.net 浏览器用完时从Silverlight 3调用Web服务,asp.net,wcf,silverlight,silverlight-3.0,Asp.net,Wcf,Silverlight,Silverlight 3.0,我们有一个很好的Silverlight 3应用程序,它与运行一些WCF web服务的web服务器进行通信。当它在浏览器中运行时,它工作得很好,但很快我们尝试在浏览器之外运行它,它不会调用我们的Web服务 我试图找出这一切发生的原因,但找不到任何解释 在将调试器附加到sllauncher.exe进程时,我能够单步执行代码,并且可以看到(Begin)Async方法被调用。但使用Fiddler,我可以看到服务器根本没有流量 我还验证了端点地址是正确的,并且端点配置正确(毕竟在浏览器中运行时它可以工作)

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

我试图找出这一切发生的原因,但找不到任何解释

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

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

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

编辑: 我注意到我们的应用程序也不能在Internet Explorer中运行。但它在Firefox中运行良好!这并不奇怪,因为浏览器外应用程序嵌入了internet explorer,但它可能是我们问题的线索


所以,您知道在Firefox中托管silverlight与在Internet Explorer中托管silverlight有什么区别吗?

也许值得尝试一下web服务调用,看看抛出了什么异常来帮助进一步调试此问题,因为就我所知,在浏览器中正常工作的web服务应该可以在OOB中工作。

我们遇到的问题OOB都与本地机器设置有关。如果您支持代理,请暂时将其关闭。还要检查防火墙,确保它能让web服务流量通过

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

using System.Net;

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

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

没有流量击中fiddler的原因是

  • 您正在访问的HTTPS地址上没有clientaccesspolicy.xml
  • 您正在visual studio中运行Silverlight应用程序,因此从visual studio中运行承载SL clientbin的网站,ASP开发服务器会阻止进行某些调用,特别是如果您的Web服务地址与网站所在的地址不同,并且某些端口没有响应,从而导致fiddler完全无所事事的最奇怪行为

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

    优点,但我认为这两者都不是问题的原因。我曾尝试在本地和远程服务器上运行webservices,但行为是相同的。我还尝试调用GetIsNetworkAvailable,但它返回true。啊……有一些关于活动X控件等的IE设置可能会导致SL OOB应用程序无法运行。如果可以,请将所有IE设置设为默认值,然后尝试运行它。