2011-11-01 78 views
0

我有一个使用ASP.NET构建的应用程序,它具有与WCF后端通信的嵌入式Silverlight对象。它是建立像这样:Silverlight因跨域错误而失败

服务器1:主机ASP.NET网站上IIS7

服务器2:主机上IIS7 WCF应用

我的机器将试图访问服务器1通过互联网登录进入网站。服务器1将通过我们在服务器2上的内部网络使用WCF Web服务对用户进行身份验证。我可以做到这一点,但是当它加载Silverlight对象时,它会崩溃,抱怨CrossDomain/ClientAccessPolicy失败。因此,为了确保我将这两个文件放在服务器1和2上的inetpub/wwwroot中的每个文件夹上。但我仍然遇到同样的错误。

当我从服务器1运行应用程序时,它可以通过它的本地网络IP连接到站点并且它可以工作,它也适用于我在自己的机器上从Visual Studio 2010运行ASP.NET应用程序,指向服务器2的Web服务参考。

我几乎在我的智慧结尾,已经有这么多的红鲱鱼,我已经尝试过,没有任何工作。我甚至不确定它是否是每台服务器上的Silverlight/WCF或IIS配置。

如果任何人都可以帮我解释一下,我将不胜感激。

谢谢, 斯图尔特。

回答

0

我发现问题到我的问题。我没有意识到Silverlight应用程序试图访问受防火墙限制的Web服务,所以我不得不创建另一个Web服务,以便通过网站和原始Web服务重新路由。

这是多么痛苦!

2

一个想法可能是使用fiddler并找到正在制作crossdomainpolicy xml请求的请求。这是否失败?检查它指向的地址。我使用它调试了我的问题。它指向服务器的根目录,我的crossdomainpolicy xml位于WCF项目文件夹中。

+0

我在自己的机器上使用fiddler来查看正在发送的数据,但据我所知它甚至不询问clientaccesspolicy,我应该在托管silverlight应用程序的服务器上运行fiddler吗? – stuartmclark

+1

我认为你应该至少看到一个crossdomainpolicy xml或clientaccesspolicy xml的请求。尝试清除fiddler中的当前请求并重新运行它。 –

+0

这是我感到困惑的地方,如果我在自己的机器上运行提琴手,它将如何知道服务器1和服务器2之间正在做什么请求?尽管当我尝试在服务器1上运行Fiddler时,它几乎不显示任何流量,除非我误解了如何使用fiddler? – stuartmclark