2011-03-29 133 views
0

我写了WCF服务,并且我还写了(在同一个解决方案中)silverlight客户端。 我试图从Silverlight客户端访问WCF服务 - 我得到了跨域的异常。silverlight和wCF访问的跨域问题

当我运行在服务器计算机上的系统来说,这只是发生(直通IIS 7.5)

我想我的本地机器 上运行同一系统(WCF服务器& Silverlight客户端)和它的不发生了。

异常:“://本地主机:4522/HTTP的MyService”

,而试图做出URI请求时发生错误。这可能是由于尝试以跨域方式访问服务而没有适当的跨域策略或者不适合SOAP服务的策略。您可能需要联系服务的所有者以发布跨域策略文件,并确保它允许发送与SOAP相关的HTTP头。有关更多详细信息,请参阅内部例外。

我看到了,我需要添加类似ICrossDomainService在网络上 - 但我不知道我需要定义他们对我的项目

(在Silverlight项目的WCF服务器项目?)有人可以帮助我吗?

谢谢。

回答

1

我认为您需要在网站的根文件夹中创建客户端访问策略文件。

这说明如下:http://msdn.microsoft.com/en-us/library/cc645032(v=vs.95).aspx

策略文件看起来是这样的,你需要根据你的跨域的要求来定制它。这个例子是从MSDN取得的,可能不能在没有改变的情况下使用。

<?xml version="1.0" encoding="utf-8"?> 
<access-policy> 
    <cross-domain-access> 
<!--Enables Silverlight 3 all methods functionality--> 
    <policy> 
     <allow-from http-methods="*">  
     <domain uri="*"/> 
     </allow-from>  
     <grant-to>  
     <resource path="/api" include-subpaths="true"/> 
     </grant-to>  
    </policy> 
<!--Enables Silverlight 2 clients to continue to work normally --> 
    <policy> 
     <allow-from >  
     <domain uri="*"/> 
     </allow-from>  
     <grant-to>  
     <resource path="/api" include-subpaths="true"/> 
     </grant-to>  
    </policy> 
    </cross-domain-access> 
</access-policy> 

我对模式不太熟悉,但我再次击中MSDN。类似这样的可能会更接近:

</cross-domain-access> 
    <policy> 
    <allow-from> 
     <domain uri="*"/> 
    </allow-from> 
    <grant-to> 
     <resource/> 
    </grant-to> 
    </policy> 
</cross-domain-access> 

请检查MSDN以确保您不会打开安全漏洞!

+1

我添加了跨域文件,它仍然无法正常工作。 – Yanshof 2011-03-29 13:21:07