C# WCF和Silverlight CrossDomain.xml

C# WCF和Silverlight CrossDomain.xml,c#,.net,vb.net,wcf,silverlight,C#,.net,Vb.net,Wcf,Silverlight,抱歉,如果以前有人问过我(我在任何地方都找不到答案),但我有一个我创建的WCF服务应用程序,我正试图通过我的Silverlight 4应用程序访问。我已经将服务引用添加到SilverLight应用程序中,我只是尝试调用该服务上的一个默认预先存在的方法(GetData)。调用该方法时,我得到一个错误: 尝试创建时出错 对URI“my URI”的请求可能会 可能是由于试图访问 以跨域方式提供服务,无需 制定适当的跨领域政策, 或不合适的策略文件 用于SOAP服务 我知道我需要一个crossdomai

抱歉,如果以前有人问过我(我在任何地方都找不到答案),但我有一个我创建的WCF服务应用程序,我正试图通过我的Silverlight 4应用程序访问。我已经将服务引用添加到SilverLight应用程序中,我只是尝试调用该服务上的一个默认预先存在的方法(GetData)。调用该方法时,我得到一个错误:

尝试创建时出错 对URI“my URI”的请求可能会 可能是由于试图访问 以跨域方式提供服务,无需 制定适当的跨领域政策, 或不合适的策略文件 用于SOAP服务

我知道我需要一个crossdomain.xml文件,但是我把crossdomain.xml文件放在哪里似乎并不重要,我仍然得到错误,这是文件的内容:

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


有什么想法吗?

将策略文件放在何处很重要-它需要放在运行您的服务的web服务器的“根”上

这在我们的网站上有很好的记录

关于这些问题,我的最佳建议是运行Fiddler工具并跟踪流量,您应该会看到Silverlight正在查找clientaccesspolicy.xml文件(以及另一种格式的crossdomain.xml文件),这样可以更容易地确定Silverlight在何处查找该文件

迈克。



下面是一个非常简单的
crossdomain.xml
文件。与您的相比,您似乎编写了一个
clientaccesspolicy.xml
文件。将文件重命名为
clientaccesspolicy.xml
,您应该会没事。

首先,这个视频有帮助吗

第二,我诊断这些疾病的方法如下

1) 我使用Fiddler来确保我看到Silverlight请求一个clientaccesspolicy.xml文件,并且它获得了clientaccesspolicy.xml,也就是说,检查您的web服务器是否返回clientaccesspolicy.xml,Silverlight是否没有将“NotFound”状态恢复到其请求。你可以在《小提琴手》中看到这一点。顺便说一句,你没有提到你使用的是IIS还是Cassini?IIRC“localhost”会给fiddler带来一些问题,所以我通常使用IIS和正确的机器名

2) 当我知道Silverlight肯定会得到一个clientaccesspolicy.xml文件时,我通常会构建我能想到的最轻松的文件版本。有点像

一旦我感到满意,我就会将域、路径、头和方法的列表细化到我真正需要的

希望有帮助


Mike。

谢谢@Mike,我现在已经安装了fidler,我看到它在“localhost:8732”中查找clientaccesspolicy.xml,我尝试将该文件添加到“C:\inetpub\wwwroot”中,但没有成功。那是我需要放文件的地方吗?(很抱歉,我对web开发人员还比较陌生)谢谢@Mike,Fiddler debugger对web开发人员来说真是太棒了
<?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>