在用Silverlight开发中,经常会遇到跨域的问题,今天终于解决了,总结如下:
1、将两个跨域策略文件clientaccesspolicy.xml和crossdomain.xml放在IIS的根目录下,即C:\Inetpub\wwwroot,而你的网站虚拟目录可能是D:\testwebsite,此文件则需要放在C:\Inetpub\wwwroot而不是后者,这是第一个要注意的地方。
2、在项目中新建一个WCF服务应用程序,此时默认会新建一个名为Service1.svc的文件,不过一般是不用的,可以新建一个项目中需要的.svc的文件,完成之后,这个WCF服务应用程序要发布出来,也就是要发布到IIS中
3、在Silverlight项目中引用刚才发布的WCF的服务
4、修改WCF服务的web.config文件
<appSettings/>
<connectionStrings>
<add name=”SQLConnString” connectionString=”Data Source=1992.168.0.41”>
</connectionStrings>
<service behaviorConfiguration=”WCFService.ClaServiceBehavior” name=”WCFService.ClaService”>
<endpoint address=”” binding=”basicHttpBinding” contract=”WCFService.ClaService”>
<endpoint address=”mex” binding=”mexHttpBinding” contract=”IMetadataExchange”>
</service>
5、重新发布WCF服务
6、删除Silverlight的服务,重新引用刚才发布的WCF服务