none
Silverlight+wcf的问题 RRS feed

  • 问题

  •  

    相关问题好都人都问过了,主要是wcf跨域问题。我的wcf服务是通过建立网站建立的。然后新建了一个Silverlight的工程,在解决方案里面通过“添加网站”方式将wcf服务所在的网站添加进来。问题就出现,如果将wcf配置成IIS下网站,并且在Silverlight工程中的ServiceReferences.ClientConfig文件<endpoint address="http://locahost/Service.svc",加入相应的跨域访问xml文件,程序能够正常执行,但是无法对wcf中的服务进行调试。

    如果不配置,两个工程一起调试的话,就会出现“尝试请求 URI“http://localhost:12290/WCFService Web/Service.svc”时发生错误。这可能是因为在没有适当的跨域策略的情况下试图以跨域方式访问服务,或者是策略不适用于 SOAP 服务。您可能需要与服务所有者联系以发布跨域策略文件,确保策略允许发送与 SOAP 相关的 HTTP 头。请参阅内部异常以了解详细信息”这样的错误。不知道怎么才能解决呢?

    2008年10月19日 3:45

答案

  •  jiaokeye 写:

    <?xml version="1.0" encoding="utf-8"?>
    <access-policy>
      <cross-domain-access>
        <policy>
          <allow-from http-request-headers="*">
            <domain uri="http://localhost:1198"/>
          </allow-from>
          <grant-to>
            <resource path="http://austin-t61:1197/Service1.svc" include-subpaths="true"/>
          </grant-to>
        </policy>
      </cross-domain-access>
    </access-policy>

     

    1。以上是我的跨域文件,http://austin-t61:1197/Service1.svc我挂在了IIS上,并可以通过IE访问

    2。http://localhost:1198是我Silverlight的Host地址,Host的端口为1198,我运行后,一然提示我需要跨域策略,我跨域策略就放在Host的根目录下也就是http://localhost:1198

     

    郁闷啊  一然不行  谢谢您希望再给我一些提示  劳驾!!!

     

    ClientAccessPolicy.xml

     

    <?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 path="/" include-subpaths="true"/>
                </grant-to>
            </policy>
        </cross-domain-access>
    </access-policy>

     

    先试验这个所有验证都通过的跨域策略,这个ok了,最好是本地做域名镜像

    修改本机这里c:\windows\system32\drivers\etc\host.jxj

    localhost的跨域是有点问题,然是本地域名映射之后就ok了,真实环境其实也是这样
    2008年12月3日 14:22
    版主

全部回复

  •  

    是不是我没说清楚啊
    2008年10月19日 23:36
  • .

    2008年10月31日 7:50
  •  

    错误提示是你的跨域策略不对,如果本地不建IIS站点网站,你的跨域策略就会有点问题,如果想wcff跟sl一起调试,可以试着新建一个Web Application的sl程序SilverlightApplication1.Web里面添加WCF服务,然后再重新配置下WebConfig,就可以一起调试了,

    或者你可以把你的项目建在IIS上,然后再配置跨域策略再进行调试

     

    ps:一般来说wcf项目跟sl项目都是分开来做的,wcf保证自己的调用返回值ok,sl保证值正确,程序ok,如果再出现问题才一起调试.

     

     

    3楼的脏口了哦= .=

    2008年10月31日 8:27
    版主
  • 请尝试一下添加现有项目的方式将 WCF 工程加入到解决方案

     

    2008年10月31日 10:30
  • 请问搂住得问题解决了吗?我也和你遇到了同样的问题 郁闷啊!我是单独将WCF发布到IIS再用SL来调试,和你同样的报错,但我将WCF加入SL工程时一切正常  郁闷啊!

    2008年12月1日 8:47
  • 那是因为楼上你没添加跨域访问文件

    2008年12月1日 8:57
    版主
  • 检查一下,端口号是否正确。

    2008年12月2日 2:26
  • <?xml version="1.0" encoding="utf-8"?>
    <access-policy>
      <cross-domain-access>
        <policy>
          <allow-from http-request-headers="*">
            <domain uri="http://localhost:1198"/>
          </allow-from>
          <grant-to>
            <resource path="http://austin-t61:1197/Service1.svc" include-subpaths="true"/>
          </grant-to>
        </policy>
      </cross-domain-access>
    </access-policy>

     

    1。以上是我的跨域文件,http://austin-t61:1197/Service1.svc我挂在了IIS上,并可以通过IE访问

    2。http://localhost:1198是我Silverlight的Host地址,Host的端口为1198,我运行后,一然提示我需要跨域策略,我跨域策略就放在Host的根目录下也就是http://localhost:1198

     

    郁闷啊  一然不行  谢谢您希望再给我一些提示  劳驾!!!

     

    2008年12月3日 10:32
  •  jiaokeye 写:

    <?xml version="1.0" encoding="utf-8"?>
    <access-policy>
      <cross-domain-access>
        <policy>
          <allow-from http-request-headers="*">
            <domain uri="http://localhost:1198"/>
          </allow-from>
          <grant-to>
            <resource path="http://austin-t61:1197/Service1.svc" include-subpaths="true"/>
          </grant-to>
        </policy>
      </cross-domain-access>
    </access-policy>

     

    1。以上是我的跨域文件,http://austin-t61:1197/Service1.svc我挂在了IIS上,并可以通过IE访问

    2。http://localhost:1198是我Silverlight的Host地址,Host的端口为1198,我运行后,一然提示我需要跨域策略,我跨域策略就放在Host的根目录下也就是http://localhost:1198

     

    郁闷啊  一然不行  谢谢您希望再给我一些提示  劳驾!!!

     

    ClientAccessPolicy.xml

     

    <?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 path="/" include-subpaths="true"/>
                </grant-to>
            </policy>
        </cross-domain-access>
    </access-policy>

     

    先试验这个所有验证都通过的跨域策略,这个ok了,最好是本地做域名镜像

    修改本机这里c:\windows\system32\drivers\etc\host.jxj

    localhost的跨域是有点问题,然是本地域名映射之后就ok了,真实环境其实也是这样
    2008年12月3日 14:22
    版主
  •  

    八爪熊

    您能留给我一个您的MSN或QQ吗  我先试试您的方法,如果存在问题方便与您取得联系,谢谢您八爪熊

    非常感谢您对我问题的支持,谢谢!!!

    2008年12月3日 21:50
  •  Fredy.Hua 写:

     

    .

     

    我建议你可以看看下面这个文章:

    http://community.csdn.net/IndexPage/SmartQuestion.aspx

     

    在没有人回复你的邮件之前,请先确认自己的问题是否描述清楚了,另外请避免说脏话,任何问题都是由原因的,没有人专门为你活着,我很奇怪版主为什么不删除上面的帖子--这里只是个技术论坛。

     

    最后我要澄清的是我不是微软的工程师。

    2008年12月5日 10:50
  •  jiaokeye 写:

     

    八爪熊

    您能留给我一个您的MSN或QQ吗  我先试试您的方法,如果存在问题方便与您取得联系,谢谢您八爪熊

    非常感谢您对我问题的支持,谢谢!!!

     

    有其他问题可以加

    QQ:454768

     

    不过还是希望有问题可以到这里来提问,方便与大家分享问题啦,相互解答的过程也就是一个学习进步的过程

    2008年12月5日 11:08
    版主
  •  Killmyday 写:
     Fredy.Hua 写:

     

    .

     

    我建议你可以看看下面这个文章:

    http://community.csdn.net/IndexPage/SmartQuestion.aspx

     

    在没有人回复你的邮件之前,请先确认自己的问题是否描述清楚了,另外请避免说脏话,任何问题都是由原因的,没有人专门为你活着,我很奇怪版主为什么不删除上面的帖子--这里只是个技术论坛。

     

    最后我要澄清的是我不是微软的工程师。

     

     

    脏口已删...其实我想给那位脏口的同志次改过自新的机会...

    2008年12月5日 11:58
    版主
  •  

    终于搞定了  谢谢您 八爪熊 非常感谢你的分享!

    2008年12月15日 10:14
  •  jiaokeye 写:

     

    终于搞定了  谢谢您 八爪熊 非常感谢你的分享!

     

    没事儿常来看看,这里有很多经验与大家分享

    2008年12月15日 10:17
    版主
  • 八爪熊  非常感谢您  问题已经解决了  谢谢您!

    2008年12月15日 15:43
  • 请问你是如何解决的?我也遇到了同样的问题!
    2009年3月31日 2:12