跨域问题

时间:2009-12-02 08:21:34

标签: silverlight silverlight-3.0

我正在使用带有wcf的silverlight,当我使用.web项目时它会运行但是当使用银灯项目运行以下异常抛出时:

尝试向URI“http://localhost:9000/Services/BLWCFSvrc.svc”发出请求时发生错误。这可能是由于尝试在没有适当的跨域策略的情况下以跨域方式访问服务,或者是不适合SOAP服务的策略。您可能需要联系服务的所有者以发布跨域策略文件,并确保它允许发送与SOAP相关的HTTP标头。在不使用InternalsVisibleToAttribute属性的情况下,在Web服务代理中使用内部类型也可能导致此错误。有关更多详细信息,请参阅内部异常。

我想使用silverlight项目来调试我的代码

提前致谢

3 个答案:

答案 0 :(得分:0)

为了从Silverlight访问网络资源,托管资源的域必须提供客户端访问策略文件;这是出于安全原因而设计的。有关详细信息,请参阅此处:http://msdn.microsoft.com/en-us/library/cc645032%28VS.95%29.aspx

答案 1 :(得分:0)

只需将 clientaccesspolicy.xml 文件(例如,将look at this post;您甚至可以使用此示例)复制到您的网络服务器的根目录中(例如: c: \的Inetpub \ wwwroot的\ )。

这应该有所帮助。

答案 2 :(得分:0)

我认为你的问题不同,只是拥有clientaccesspolicy.xml,它在web项目下运行,这意味着你正在提供策略,如果你在web项目下添加了单独的文件那么它们就不会当您单独运行SL3应用程序时部署,但我确定您已经解决了这个问题并且您使用webHttp绑定(RESTful样式)通过WCF提供策略,如果没有,您应该。

我认为问题在于,当您运行webproject时,它会构建到本地IIS并从那里执行,IIS将允许SL3应用程序与不同于托管站点的端口/地址进行通信

当您本机运行SL3应用程序时,VS2008会自动生成一个测试html网站,以便使用某些默认设置进行托管,并使用VS2008内置托管服务,该服务不允许与不同的地址/端口进行通信托管地址。 (即使Silverlight是客户端库,VS2008也可以这样做)

因此,如果您希望本机运行Silverlight应用程序,意味着实际执行XAP,您可以将其部署到IIS,并配置IIS以提供XAP文件,或者只是安装它并从浏览器中运行它并让它从IIS已部署的版本