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>
crossdomain.xml
:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy>
<cross-domain-policy>
<allow-http-request-headers-from domain="*" headers="*" secure="true" />
</cross-domain-policy>
这里没什么特别的,这是数百万WCF服务用来允许Silverlight客户端访问它们的标准设置。不幸的是,这个设置不能在我部署到的实际环境中工作。用于测试部署的预生产环境与实际环境的设置完全相同(或者系统管理员声称是这样),并且在那里一切都工作得很好,这就是为什么我如此困惑的原因。
我让一个系统管理员使用HTTPDebuggerPro跟踪来自Silverlight客户端的请求,它显示客户端正在检索clientaccesspolicy.xml
和crossdomain.xml
而没有问题(HTTP状态200)。然而,在请求这些文件之后,客户端试图调用服务并立即收到CrossDomainException
。
我还尝试让系统管理员将WCF服务URL添加到Silverlight客户端托管的框上的"允许的站点"列表中(根据http://blogs.msdn.com/b/fiddler/archive/2010/11/22/fiddler-and-silverlight-cross-zone-cross-domain-requests.aspx最后一段的最后一句话),但这也不起作用。
想买!
是否将clientaccessppolicy .xml放在域的根目录中?