2011-07-28 69 views
0

我创建了一个从Silverlight应用程序调用的WCF服务库。从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

为什么它表示本地主机URL?我该如何解决这个问题?我应该在哪里放置这些文件?

谢谢

回答

1

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

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

+0

嗨,谢谢你的回复。那么silverlight应用程序不是在本地调用,而是通过像http://87.76.67.54:84/default.aspx这样的url。当我请求此链接时,Silverlight进度显示,但挂起以请求跨域和http:// localhost:1186/crossdomain.xml中的策略。 – user867597

+0

听起来像您的ServiceReference.ClientConfig具有本地地址方案。你可以验证你的web.config和ServiceReference.ClientConfig是否指定了WAN地址? – cmsjr

0

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

1

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

此链接Using relative URLs to access WCF services in Silverlight可能有助于解释发生了什么以及如何去做。