1

我正在编写一个 Silverlight 应用程序,它需要通过 GET/POST 请求与服务器交互。我的代码如下所示:

Uri serviceUri = new Uri(my_URI);
WebClient client = new WebClient();

client.OpenReadCompleted += new OpenReadCompletedEventHandler(OnRequestComplete);
client.OpenReadAsync(serviceUri);

但是,当调用回调函数时,我得到了 System.Security.SecurityException。我在这里从有类似错误的人那里阅读了多个问题,但是他们的所有问题似乎都源于调试时的跨域问题。当我运行我的代码时,它http://localhost:...作为域运行,所以这不应该是我不认为的问题。如果这有帮助,这是完整的错误:

{System.Security.SecurityException: Security error.
   at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClassa.<EndGetResponse>b__9(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__0(Object sendState)}

谢谢你的帮助。这是一个非常令人沮丧的问题。

更新:

我搞砸了很多,最终让一切正常工作。虽然不是 100% 做了什么...我最终将 clientaccesspolicy.xml 和 crossdomain.xml 文件复制/粘贴到任何可以想象的地方,创建了一个新的 Silverlight 项目并复制了那里的所有内容,以及其他一些东西。如果其他人遇到这个问题,这就是我必须给出的建议:/

4

1 回答 1

1

我认为它仍然违反同源策略,因为端口号不匹配:即 XAP uri 的端口和 my_URI 端口不匹配。因此System.Security.SecurityException. 您能否尝试托管相对于您的 XAP 的 my_URI。

或者更好的是,您可以尝试使用 WCF 与服务器交互吗?

于 2013-04-24T06:02:56.380 回答