在浏览器外运行时从Silverlight 3调用Web服务

时间:2009-08-28 12:02:54

标签: asp.net wcf silverlight silverlight-3.0

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

我试图找出为什么会这样,但我找不到任何解释。

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

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

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

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

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

3 个答案:

答案 0 :(得分:1)

也许值得尝试一下你的web服务调用并看看抛出什么异常来帮助进一步调试这个问题,因为在浏览器中正常工作的web服务应该在我知道的情况下工作OOB。

答案 1 :(得分:1)

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

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

using System.Net;

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

答案 2 :(得分:0)

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

没有流量到达提琴手的原因是因为

  1. 您正在访问的HTTPS地址上没有clientaccesspolicy.xml。
  2. 您正在从visual studio中运行Silverlight应用程序,因此在Visual Studio中运行托管SL clientbin的网站,ASP开发服务器会阻止某些调用,特别是如果您的Web服务地址与地址不同网站是托管的,某些端口没有响应,导致提琴手最奇怪的行为,绝对没有。
  3. 使用HTTPS时SL应用程序未联系Web服务器的行为是由于托管环境限制(尝试在IIS中部署)或客户端愿意接受认证加密策略。