Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何将文件放入ASP web根目录中?(跨领域问题)_Asp.net_Xml_Silverlight_Wcf - Fatal编程技术网

Asp.net 如何将文件放入ASP web根目录中?(跨领域问题)

Asp.net 如何将文件放入ASP web根目录中?(跨领域问题),asp.net,xml,silverlight,wcf,Asp.net,Xml,Silverlight,Wcf,我在ASP中从Silverlight项目跨域访问WCF服务时遇到问题 本教程建议创建crossdomain.xml或clientaccesspolicy.xml文件,并将它们放在服务的web根目录中 我制作了这些文件,并将它们放在VisualStudio项目的顶层。我仍然有这个问题。这是不是意味着我把文件放错地方了 clientaccesspolicy.xml: <?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM

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

本教程建议创建
crossdomain.xml
clientaccesspolicy.xml
文件,并将它们放在服务的web根目录中

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

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>
<?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>

crossdomain.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>
<?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>


更新:我目前正在开发服务器上工作。如何使其在那里工作?

据我所知,它们必须位于web服务器的根目录(/)中,而不是web项目的根目录中。

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


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

使用development web服务器最终导致的一个问题是,保存WCF服务的web项目可能会指定一个虚拟路径。这会将显示在项目根目录下的内容从客户机透视图的“/”根目录下放置到虚拟文件夹中。因此,将clientaccesspolicy.xml文件放在项目的根目录下并不会将该文件放在silverlight客户端预期的“/clientaccesspolicy.xml”位置

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


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

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

如果我使用的是开发服务器,该怎么办?如果您的服务在本地运行,并且Silverlight客户端也在运行,您应该不会有任何问题。这两个是绑定到“localhost”的吗?好吧,也许我搞错了问题的原因。我打开了一个新问题。我已经将虚拟路径设置为
/
。我怀疑我的问题是由其他原因引起的;我提出了一个新问题。