2009-09-08 110 views
0

我知道,为了Silverlight能够使用WebClient类发出跨域请求,需要在服务器的根目录中有一个clientaccesspolicy.xml。我得到了这个工作,并且当Silverlight应用程序在调试模式下编译时,这很好。但是,当Silverlight应用程序在发布模式下编译时,会出现SecurityException。即使是更加狡猾,似乎silverlight应用程序甚至没有向(其他域)服务器发出请求 - 它只是在没有检查的情况下抛出异常!Silverlight跨域:仅在发布模式下的SecurityException

任何帮助,将不胜感激......

P.S:它是HTTP(但在端口30588),并且请求为扩展名的路径(Web服务返回JSON)。

回答

2

大声笑,我解决了它...在发布模式(但不是在调试),客户端启动速度比服务器(他们都被设置为VS中的“启动项目”)。因此,客户端(Silverlight)在服务器启动之前请求clientaccesspolicy.xml,并且由于服务器尚未运行,找不到主机。这表现为SecurityException。我在客户端添加了一个Thread.Sleep来“修复”它(显然,hack不会进入任何源代码控制/实际构建)。

所以要学习的教训......呃...在Silverlight中的SecurityException需要更详细的原因...?