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

Posted

技术标签:

【中文标题】如何针对已部署的服务 [跨域问题] 调试 Silverlight 应用程序?【英文标题】:How do I debug a Silverlight application against a deployed service [cross domain problem]? 【发布时间】:2011-01-30 11:34:31 【问题描述】:

我有一个 WCF 服务和一个 Silverlight 应用程序,它们在部署到 IIS 服务器时工作得很好。

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

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

在域根目录 (http://iisserver/) 上,我放置了完全开放的 crossdomain.xml 和 clientaccesspolicy.xml 文件。我仍然得到异常。

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

我在这里错过了什么?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于如何针对已部署的服务 [跨域问题] 调试 Silverlight 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

前端前后端分离开发调试过程中跨域问题解决方式

为什么我的已部署的Azure应用程序会针对一位用户(除一名用户外,对CORS起作用?

解决本地调试导致的Ajax跨域问题

关于vue项目请求WCF服务跨域的问题(后台设置)

基于nodejs打包部署vue项目

Apache Tomcat下载安装环境变量配置以及项目部署