none
SL调WebService跨域问题之同一解决方案下的WebService项目,如何解决跨域问题 RRS feed

  • 问题

  • 对于一个已经测试并发布到IIS的WebService,可以将ClientAccessPolicy.xml文件放到根目录解决跨域问题

    但同一解决方案下的WebService网站项目,在调试时是由ASP.NET Development Server动态开启的一个类似http://localhost:1234/的站点

    此时SL调该webservice仍然有跨域问题,我将ClientAccessPolicy.xml文件放在webservice项目中没效果

    难道每次都要将webservice测试完毕后再发布到IIS才可以由SL调用?
    2010年2月2日 6:32

答案

  • 找到原因了,是Website的虚拟路径问题,WebApplication就没有此问题
    该WebService的WebSite有个虚拟路径的属性,默认为"\WebService名"
    删除该虚拟路径,只留"\",相应的SL服务引用地址也要去掉虚拟路径,改为http://localhost:1234/Service.asmx
    这样就可以在本地Debug了
    2010年2月3日 5:27

全部回复

  • Silverlight2 跨域调用Web服务的方法

    http://dotnet.aspx.cc/article/2fde980d-d8d9-485d-ae5d-20246d5f7207/read.aspx

    一定要放在根目录下

    【孟子E章】
    2010年2月2日 6:51
    版主
  • dui,必须发布到iis
    【孟子E章】
    2010年2月2日 6:52
    版主
  • 谢谢孟子大哥的回复,俺就是看你的教程文章长大滴~~~:)

    呵呵,现在问题貌似出在了我机器的ASP.NET Development Server上
    在我同事的机器上却是可以本地Debug的

    我们的情况都是在同一个解决方案中,有三个项目:1.Silverlight项目 2.加载Silverlight的website 3.website类型的WebService
    问题就出在这个website类型的WebService上
    Debug时,WebService由VS自带的ASP.NET Development Server启动一个WebDev.WebServer的进程
    我同事只要在该WebService项目中添加ClientAccessPolicy.xml文件便不再出现跨域的报错(与web.config文件同级)
    而我这样做却仍然出现跨域的报错,发布到IIS没问题,莫非是VS哪里对ASP.NET Development Server有专门的配置属性?

    2010年2月3日 3:41
  • 找到原因了,是Website的虚拟路径问题,WebApplication就没有此问题
    该WebService的WebSite有个虚拟路径的属性,默认为"\WebService名"
    删除该虚拟路径,只留"\",相应的SL服务引用地址也要去掉虚拟路径,改为http://localhost:1234/Service.asmx
    这样就可以在本地Debug了
    2010年2月3日 5:27