如何将文件放在ASP Web根目录中? (跨域问题)

时间:2010-10-10 17:41:19

标签: asp.net xml silverlight wcf

我遇到从Silverlight项目到ASP中的WCF服务的跨域访问问题。

本教程建议制作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>

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

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

因此,“root”不是您的项目之一,而是网站之一(在IIS网站的意义上)。

答案 2 :(得分:0)

您最终使用开发Web服务器的一个问题是,保存WCF服务的Web项目可能会指定虚拟路径。这会将位于项目根目录的内容放在虚拟文件夹中,从客户端视图的“/”根目录开始。因此,将clientaccesspolicy.xml文件放在项目的根目录下不会将文件放在Silverlight客户端所期望的“/clientaccesspolicy.xml”中。

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

除非您打算支持Silverlight以外的客户端技术,否则您不需要crossdomain.xml文件。

答案 3 :(得分:0)

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