使用WebClient GET请求的System.Security.SecurityException

时间:2013-04-24 05:41:47

标签: c# silverlight

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

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项目并复制了那里的所有内容,以及其他一些东西。如果有其他人遇到这个问题,那就像我必须给出的建议一样多:/

1 个答案:

答案 0 :(得分:1)

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

或者甚至更好,您可以尝试使用WCF与服务器进行交互。