2010-10-10 15 views
1

我遇到了从Silverlight项目到ASP中的WCF服务的跨域访问问题。如何把一个文件放在一个ASP web根目录下? (跨域问题)

本教程建议将crossdomain.xmlclientaccesspolicy.xml文件放入服务的Web根目录中。

我制作了这些文件,并将它们放在Visual Studio项目的顶层。我仍然有问题。这是否意味着我把文件放在了错误的地方?

clientaccesspolicy.xml

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM 
    "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy> 

的crossdomain.xml

<?xml version="1.0" encoding="utf-8" ?> 
<access-policy> 
    <cross-domain-access> 
    <policy> 
     <allow-from http-request-headers="*"> 
     <domain uri="*"/> 
     </allow-from> 
     <grant-to> 
     <resource include-subpaths="true" path="/"/> 
     </grant-to> 
    </policy> 
    </cross-domain-access> 
</access-policy> 

更新:我目前工作刚刚在开发服务器上。我怎样才能在那里工作?

回答

0

据我所知,他们必须进入Web服务器的根目录(/)而不是Web项目的根目录。

+0

如果我使用开发服务器怎么办? – 2010-10-10 18:00:25

0

这些文件必须与IIS Web服务器上的WCF服务一起部署。

所以“根”不是你的项目之一,而是网站之一(在IIS网站的意义上)。

+0

我该如何在当地完成这项工作? – 2010-10-10 18:00:10

+0

如果您的服务在本地运行,并且Silverlight客户端也不会有任何问题。这两个绑定到“本地主机”? – Pragmateek 2010-10-10 18:45:36

+0

好的,也许我误解了我的问题的原因。我提出了一个新问题。 – 2010-10-10 19:24:46

0

您最终使用开发Web服务器的一个问题是持有WCF服务的Web项目可能会指定一个虚拟路径。这将项目的根目录出现在从客户端角度的“/”根目录下的虚拟文件夹中。因此,将clientaccesspolicy.xml文件放在项目的根目录下不会将该文件放在Silverlight客户端期望的“/clientaccesspolicy.xml”处。

在Visual Studio中打开承载WCF服务的Web项目的属性窗口,选择Web选项卡,将虚拟路径设置为“/”。 (您可能希望在Silverlight项目中创建引用和代理之前执行此操作)。

顺便说一句,除非你打算支持除Silverlight以外的客户端技术,否则你不需要crossdomain.xml文件。

+0

我已经将虚拟路径设置为'/'。我怀疑我的问题是由其他问题引起的;我创建了一个新问题。 – 2010-10-10 19:25:11

0

我的文件是在正确的地方。问题是交换了这两个文件的名称 - SL跨域规则使用Flash文件名命名,反之亦然。

相关问题