Silverlight 2.0 beta 1与crossdomain.xml和clientaccesspolicy.xml

按照现在社区里大多数的silverlight 2.0教程,在做到与webservice通信的时候通常会遇到这样一个问题,就是crossdomainerror.而关于crossdomain.xmlclientaccesspolicy.xml这两个文件所提及的更是少之又少,甚至在网络上搜索都是关于flash或者flex.我一直就被这个问题困扰着.

看到silverlight.net上的新视频教程才解决了这个问题.里面提及了一个工具webdevhelper很不错,通过它可以看到一个silverlight应用运行的时候都做了哪些请求(当然,这个工具不只是干这个的).

在网络上能找到的资料,和在社区交流的信息,都是说把这两个文件其中的一个放到webservice项目根目录就可以了.当然这样我一直没有试验成功.后来通过这个工具,发现,比如我的webservice目录叫做WSProject,引用地址是http://localhost/WSProject/webservice.asmx,那么silverlight不是在http://localhost/WSProject这个目录下找crossdomain.xmlclientaccesspolicy.xml,而是在http://localhost/下找这两个文件.所以假如你的IIS默认目录是C:\inetpub\wwwroot的话,服务文件是部署在C:\inetpub\wwwroot\WSProject,那么crossdomain.xmlclientaccesspolicy.xml这样的文件一定要放在C:\inetpub\wwwroot而不是http://localhost/WSProject.

另外更多的时候,对于初学者做相关教程的时候,按照教程里的步骤,最后点VS2008里运行的时候,通常是把silverlight程序作为启动项目.我在做到这里的时候就遇到了本文所涉及到的问题.我发现这个时候在项目里添加crossdomain.xmlclientaccesspolicy.xml是无济于事的.VS的小型服务器会给你提供这样的测试环境,http://localhost:端口号/项目名/网页名,如前所述是注定找不到这两个文件的,所以,还是把服务文件先部署到IIS上然后再测试吧.

关于silverlightflash为什么都需要这样的文件,我还不是很理解,不过可能也是类似于asp.net中的fileupload控件指定文件的那个属性为什么只能是只读一样,肯定是有它的道理的.慢慢去体会了.

 

希望对和我一样初学的朋友有帮助.

---aspnetx

 

posted on 2008-04-19 23:14 哥本哈士奇(aspnetx) 阅读(1502) 评论(4) 编辑 收藏

评论:
#2楼 2008-05-15 18:00 | 傻样精英      
从文字上理解就是跨域操作的权限问题。因为silverlight支持跨域通信
 回复 引用 查看   
#3楼 2008-05-21 12:09 | 风云(lookcode.net)      
可以把项目名去掉。
在项目的属性哪边有一个virtual path

website的同样也有这个
VWDVirtualPath = "/"

 回复 引用 查看   
#4楼 2009-08-07 10:14 | IIT      
是啊,我现在做这方面时也遇到了这样的错误。就是不敢继续往下做了。生怕一步错,步步错。本来在本地测试好好的,万一发布到服务器,在不行就有点前功尽弃了。呵呵。看你你的解说,心里放松多了。多谢 啊……
 回复 引用 查看   

文章和随笔为作者个人感悟,不代表任何公司或团体的立场和观点.

如需转载请加上博客园链接.

由于技术更新很快,请各位阅读的时候特意留意下文章的发布时间以及在这个时间相关技术或者产品的版本.

MSN:
aspnetx#live.com
QQ:
63036666
------------
目前关注:
ASP.NET(MVC2)
WPF & Silverlight
.Net framework 4.0
SQLServer2008 BI & GIS
PowerShell
设计模式
数据仓库
软件工程

昵称:哥本哈士奇(aspnetx)
园龄:6年7个月
荣誉:推荐博客
粉丝:112
关注:6

搜索

 

常用链接

随笔分类(358)

关注的博客

网站收集

我的CodePlex项目

积分与排名

  • 积分 - 553678
  • 排名 - 95