如何针对已部署的服务[跨域问题]调试Silverlight应用程序?

时间:2010-03-22 18:15:40

标签: wcf silverlight cross-domain

我有一个WCF服务和一个Silverlight应用程序,当它们部署到IIS服务器时可以正常工作。

我想在开发计算机上调试Visual Studio中的Silverlight应用程序,但要让它与服务器上部署的实际服务进行通信,而不是与开发计算机上的本地实例进行对话。

我原本希望能够在Visual Studio中点击F5。当然,我得到4004异常,抱怨以跨域方式访问服务URL(http://iisserver/.../service.svc)。

在域根(http://iisserver/)上,我放置了open-open crossdomain.xml和clientaccesspolicy.xml文件。我仍然得到例外。

当我查看Web Development Helper或MS Network Monitor中的HTTP流量时,我发现服务器上没有任何请求任何跨域文件。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

一个选项(如果您不想弄清楚为什么没有获得正确的服务)是从远程IIS服务器启动Silverlight应用程序,然后从Visual Studio中启动,并加载适当的Silverlight解决方案,附加到要调试的浏览器进程(Debug / Attach to Process)。然后,您可以设置断点或其他任何您需要做的事情。作为一个FYI,如果您使用的是Internet Explorer,您会注意到有两个iexplore.exe进程。附加到具有“Silverlight”作为调试器选项的那个。

另一种方法是找出你的本地客户端没有调用远程服务器的原因,但这可能非常复杂。我假设您已经检查过您的代码和配置,以确保它实际上指向您希望它指向的服务器和端口?将配置从dev移动到prod时出错是导致此特定问题的常见原因。

答案 1 :(得分:0)

如果您的silverlight应用程序托管在服务服务器以外的其他服务器上,它将尝试在调用服务之前读取文件http://serviceserver/clientaccesspolicy.xml以检查访问权限。

您必须配置生产服务器以公开此文件:您可以在http://msdn.microsoft.com/en-us/library/cc645032%28VS.95%29.aspx上找到有关如何填写此文件的信息(示例部分)