0

我有一个 Silverlight 应用程序,它对 WCF 服务有一些调用。silverlight 和 WCF 都位于本地主机上。当我运行 silverlight 应用程序但在通信异常中调用 WCF 时失败。我从网上了解到,这可能是因为 WCF 和 silverlight 没有在同一个端口上运行,我必须添加 clientaccesspolicy.xml 文件。但我不明白什么是“域根”我必须在那里找到 xml。你能告诉我我必须在那里找到xml的路径(在本地主机上)

谢谢!

4

3 回答 3

1

“域根”是您托管 Silverlight 应用程序的 HTTP 域的根地址。这有点违反直觉,但请记住策略文件正在处理跨域脚本问题。

因此,如果对于其中任何一个:

http://www.yourdomain.com

http://www.yourdomain.com/app

http://www.yourdomain.com/app1/PageSilverlightNeedsToHit.aspx

http://www.yourdomain.com/app1/Service1.svc

http://www.yourdomain.com/apps/yourapp/folders/services/versions/otherlongnames/

您必须有一个有效的 clientaccesspolicy.xml 在

http://www.yourdomain.com/clientaccesspolicy.xml

一个简单的测试是从浏览器中访问该 url (http://www.yourdomain.com/clientaccesspolicy.xml) 并确保您获取访问 XML。这将模仿 Silverlight 的行为。

如果您的主机设置无法做到这一点,请回复。此请求还有其他选项(自定义 iis 处理程序等),但根据您的需要,它们可能会过大。

于 2011-02-06T12:36:36.867 回答
0

将 clientaccesspolicy.xml 添加到 Visual Studio 中的 silverlght 托管项目,例如 MyProject.Web。很短,将它放在应用程序的 Web.config 附近。

于 2011-02-06T11:25:45.493 回答
0

我昨天刚刚使用 IIS 托管的 WCF 服务进行了此操作。我将 XML 文件放在 c:\inetpub\wwwroot 中(我想。它在我工作的机器上)。

如果您不是 IIS 托管的,它可能会有所不同。当我第一次开发我的服务时,我是作为一个自托管的 exe 来开发的。在那种情况下,我没有使用 XML 文件。相反,我在我的自托管 exe 项目中实现了另一个“服务”。该服务自动创建了 XML 文件。我手头没有详细资料。如果到那时您还没有解决问题,我可以在星期一发布更多信息。

同时,请参阅此链接:

本地 WCF 服务的 ClientAccessPolicy.xml 放在哪里?

或者这个:

如何让我的 WCF 服务的客户端访问策略操作可以从根访问?

于 2011-02-05T23:42:24.337 回答