【问题标题】:WCF Service Library Called from Silverlight Crossdomain error从 Silverlight 跨域错误调用 WCF 服务库
【发布时间】:2011-10-15 03:51:08
【问题描述】:

我创建了一个从 Silverlight 应用程序调用的 WCF 服务库。

.svc 文件 (GVFileManagementService.svc) 托管在同时托管 xap 的 Web 项目上。

现在,GVFileManagementService.svc 只包含对 dll 的引用。

在本地,一切正常。但是当我在服务器上部署解决方案时,xap 不起作用,我在 Fiddler 中注意到应用程序正在请求 crossdomain.xml 和 clientaccesspolicy.xml 文件。

https 是:http://localhost:1186/clientaccesspolicy.xml

http://localhost:1186/crossdomain.xml

为什么它表示 localhost URL ?我该如何解决这个问题?我应该把这些文件放在哪里?

谢谢

【问题讨论】:

    标签: silverlight wcf


    【解决方案1】:

    客户端访问和跨域策略文件需要位于您的 Web 根目录中。 Fiddler 显示 localhost 地址,因为您在特定端口上运行本地 Web 服务器。

    你可以看看这篇文章。 http://msdn.microsoft.com/en-us/library/cc197955%28v=vs.95%29.aspx

    【讨论】:

    • 嗨,感谢您的回复。好吧,silverlight 应用程序不是在本地调用的,而是通过像87.76.67.54:84/default.aspx 这样的 URL 调用的。当我请求此链接时,silverlight 进度显示但因从localhost:1186/crossdomain.xml 请求跨域和策略而挂起。
    • 听起来您的 ServiceReference.ClientConfig 具有本地地址方案。您能否验证您的 web.config 和 ServiceReference.ClientConfig 是否都指定了 WAN 地址?
    【解决方案2】:

    您的问题可能是在构建 XAP 文件时引用了在您的开发环境中使用的本地主机服务。这就是 XAP 文件中放入的内容,以及为什么当您尝试使用 Silverlight 客户端时,它会查找 localhost。您需要创建一个相对绑定,以便当 silverlight 客户端开始请求服务时,它会替换已部署机器上的服务名称。

    此链接Using relative URLs to access WCF services in Silverlight 可能有助于解释正在发生的事情以及如何进行。

    【讨论】:

      【解决方案3】:

      由于 Silverlight 的沙盒特性,为了访问来自不同网络的资源,您需要有客户端访问策略,如果您访问的是不同的域,那么还需要一个跨域策略。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-05
        • 1970-01-01
        • 2011-11-03
        • 2010-11-24
        • 2011-08-27
        • 1970-01-01
        • 2011-10-05
        • 2011-11-15
        相关资源
        最近更新 更多