【问题标题】:Silverlight cross-domain: SecurityException in release mode onlySilverlight 跨域:仅在发布模式下出现 SecurityException
【发布时间】:2009-09-08 15:47:22
【问题描述】:
我了解,Silverlight 能够使用 WebClient 类发出跨域请求,需要在服务器的根目录中有一个 clientaccesspolicy.xml。我得到了这个工作,当 Silverlight 应用程序在调试模式下编译时,它工作得很好。但是,当 Silverlight 应用程序在发布模式下编译时,我得到一个 SecurityException。更奇怪的是,silverlight 应用程序似乎甚至没有向(其他域)服务器发出请求——它只是在没有检查的情况下抛出异常!
任何帮助将不胜感激......
P.S.:它是 HTTP(但在端口 30588 上)并且请求是针对无扩展名的路径(Web 服务返回 JSON)。
【问题讨论】:
标签:
.net
silverlight
security
cross-domain
webclient
【解决方案1】:
大声笑,我解决了...在发布模式下(但不是在调试模式下),客户端的启动速度比服务器快(它们在 VS 中都设置为“启动项目”)。因此,客户端 (Silverlight) 在服务器启动之前请求 clientaccesspolicy.xml,并且由于服务器尚未运行,因此无法找到主机。这表现为所说的 SecurityException。我在客户端添加了一个 Thread.Sleep 来“修复”它(显然,hack 不会进入任何源代码控制/实际构建)。
所以要吸取的教训...呃... Silverlight 中的 SecurityException 需要更详细地说明其原因...?