跨域访问策略不适用于IIS中承载的silverlight

跨域访问策略不适用于IIS中承载的silverlight,silverlight,wcf,iis,crossdomain.xml,clientaccesspolicy.xml,Silverlight,Wcf,Iis,Crossdomain.xml,Clientaccesspolicy.xml,我的silverlight应用程序当前托管在IIS中,并设置为仅使用HTTPS silverlight web项目是IIS网站的根,而webservices项目是映射到/Services的独立web应用程序 我可以使用“”和“”导航到我的站点 但是,如果我使用第二个选项,则站点可以正常加载,但在尝试访问我的任何服务时会出现错误 尝试创建时出错 对URI的请求 ''. 这可能是由于试图 以跨域方式访问服务 没有适当的跨域策略 在适当的地方,或是 不适合SOAP服务。你可以 需要联系的所有者 跨域发

我的silverlight应用程序当前托管在IIS中,并设置为仅使用HTTPS

silverlight web项目是IIS网站的根,而webservices项目是映射到/Services的独立web应用程序

我可以使用“”和“”导航到我的站点

但是,如果我使用第二个选项,则站点可以正常加载,但在尝试访问我的任何服务时会出现错误

尝试创建时出错 对URI的请求 ''. 这可能是由于试图 以跨域方式访问服务 没有适当的跨域策略 在适当的地方,或是 不适合SOAP服务。你可以 需要联系的所有者 跨域发布服务 策略文件,以确保它允许 要发送的SOAP相关HTTP头。 此错误也可能是由于使用 web服务中的内部类型 不使用 内部VisibleToAttribute属性

我在Web服务应用程序的根目录中以及Silverlight Web项目的根目录中都有Crossdomain.xml和clientaccesspolicy.xml文件

Crossdomain.xml

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain- policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="https://*" secure="true" />
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
      <policy>
  <allow-from>
    <domain uri="https://*"/>
  </allow-from>
  <grant-to>
    <resource path="/" include-subpaths="true"/>
  </grant-to>
</policy>

clientaccesspolicy.xml

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain- policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="https://*" secure="true" />
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
      <policy>
  <allow-from>
    <domain uri="https://*"/>
  </allow-from>
  <grant-to>
    <resource path="/" include-subpaths="true"/>
  </grant-to>
</policy>

我真的不确定问题出在哪里

谢谢

编辑

下面是fiddler调用服务后显示的内容

通过设置fiddler来解码https,IE没有显示任何额外的条目,但通过chrome,我得到了以下输出


正如错误消息所说,“这可能是由于试图以跨域方式访问服务造成的…”尝试使用一些工具,如客户端,查看服务器的实际响应。这将为您提供有关该问题的更多信息。

如fiddler所示,您的服务引用文件具有指向localhost:444的指针。当您在同一解决方案中有两个项目并添加服务引用时,通常会发生这种情况

我解决了这个问题,右键单击解决方案的frontEnd.Web部分,转到属性,然后转到Web选项卡,而不是使用自动分配端口选项,我将其更改为使用本地IIS服务器。这消除了错误。

我编辑了我的帖子,显示fiddler输出无法看到任何内容。您需要明确告诉fiddler解码HTTPS流量(工具->fiddler选项->HTTPS),否则它将不会显示HTTPS请求。我现在已经设置好了,我在fiddler中获得了一个额外条目,但其中没有任何信息。我在使用Chrome进行测试时,用fiddler显示的信息更新了原始帖子。看起来它正在查找正确的文件,然后在服务调用中失败。当使用chrome连接时,返回的错误为“未找到”。如果我使用IE或chrome使用IP连接,则错误为我最初发布的错误。我已经在服务中设置了断点,并将VS附加到进程中,但调用没有命中服务器。服务返回500(内部服务器错误)。如果Fiddler的回复中有任何信息,那么它可能会提示问题所在;否则,您可以在服务器上启用跟踪,并且在跟踪日志中会出现异常,解释服务器返回500响应的原因。web服务托管在silverlight应用程序上,因此引用是正确的