2

我有一个 Silverlight 应用程序,当它安装在与服务器不同的 IP 段中时无法登录。(客户端在 192.168.77.xx,服务器在 192.168.40.xx)。

当客户端在同一段时,它运行顺利。

客户端可以 ping、telnet 和远程桌面服务器。它还可以从服务器登录其他应用程序,但无法登录我的 Silverlight 应用程序。

有人知道如何使用不同的 IP 段运行 Silverlight 应用程序吗?

4

1 回答 1

1

为了防止跨站点请求伪造,Silverlight 4(及更高版本)默认情况下只允许对除图像和媒体之外的所有请求进行源站点通信。要使 Silverlight 控件能够访问另一个域中的服务,该服务必须明确选择加入以允许跨域访问。

因此,您应该将Silverlight 应用程序托管在网站的根目录ClientAccessPolicy.xml或根目录。CrossDomain.xml

这是ClientAccessPolicy.xml(允许从任何其他域访问当前域上的所有资源)的示例:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="SOAPAction">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

这是以下示例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-http-request-headers-from domain="*" headers="SOAPAction,Content-Type"/>
</cross-domain-policy>

在此处阅读有关跨域边界提供服务的信息。

于 2012-05-03T13:35:26.837 回答