我在http://code.msdn.microsoft.com/PRCSL2Samples/Release/ProjectReleases.aspx?ReleaseId=1985
下载了一个纯Silverlight 的demo网站,
在vs2008里调试成功,使用正常。
但是部署到IIS就有问题。首页可以打开,但是提示系统错误
原来就是跨域的权限问题
错误提示:
尝试请求 URI“http://www.XXX.com/PhotoWebService.asmx”时发生错误。这可能是因为在没有适当的跨域策略的情况下试图以跨域方式访问服务,或者是策略不适用于 SOAP 服务。您可能需要与服务所有者联系以发布跨域策略文件,确保策略允许发送与 SOAP 相关的 HTTP 头。请参阅内部异常以了解详细信息。
========================
解决办法
一,添加两个文件
Silverlight 2.0 支持两种不同的机制供服务选择跨域访问:
- 在承载服务的域的根目录中放置一个 clientaccesspolicy.xml 文件,以配置服务允许跨域访问。
-
在承载服务的域的根目录中放置一个有效的 crossdomain.xml 文件。该文件必须将整个域标记为 public。Silverlight 支持 crossdomain.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>
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<?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="*"/>
</cross-domain-policy>
并且修改了ServiceReferences.ClientConfig 中的
<endpoint address="http://localhost:3333/SilverlightApplication2/BlogService.asmx" binding="basicHttpBinding"
bindingConfiguration="BlogServiceSoap" contract="BlogService.BlogServiceSoap"
name="BlogServiceSoap" />
地址为我部署的域名。