跨域访问策略不适用于IIS中托管的Silverlight

时间:2011-07-04 13:54:20

标签: silverlight wcf iis crossdomain.xml clientaccesspolicy.xml

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

silverlight Web项目是IIS网站的根目录,而webservices项目是映射到/ Services的单独Web应用程序。

我可以使用“”和“”

导航到我的网站

但如果我使用第二个选项,网站加载正常,但在尝试访问我的任何服务时出错。

  

尝试制作时发生错误   对URI的请求   'https://localhost/Services/Services/Authentication.svc'。   这可能是由于尝试   以跨域方式访问服务   没有适当的跨域政策   到位,或政策   不适合SOAP服务。你可以   需要联系的所有者   服务以发布跨域   策略文件并确保它允许   要发送的与SOAP相关的HTTP标头。   使用此错误也可能是由此引起的   Web服务中的内部类型   没有使用的代理   InternalsVisibleToAttribute属性

我的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>

clientaccesspolicy.xml

<?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 Output 使用fiddler设置解码https IE没有显示任何额外的条目,但使用chrome我得到以下输出

Fiddler Output2

3 个答案:

答案 0 :(得分:1)

正如错误消息所示,“由于尝试以跨域方式访问服务,此可能 ...”尝试使用某些工具,例如Fiddler客户端看看服务器的实际响应是什么。这将为您提供有关该问题的更多信息。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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