2013-04-24 78 views
1

我在写一个需要通过GET/POST请求与服务器接口的Silverlight应用程序。我的代码如下所示:有WebClient GET请求的System.Security.SecurityException

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)} 

感谢您的任何帮助。这是一个非常令人沮丧的问题。

UPDATE:

我搞砸与它周围的很多,并最终得到了一切工作。不是100%...虽然我最终将clientaccesspolicy.xml和crossdomain.xml文件复制/粘贴到任何可以想象的位置,但创建了一个新的Silverlight项目并复制了所有内容以及其他一些内容。如果有其他人遇到这个问题,那就像我必须给出的建议一样多:/

+0

可能的重复http://stackoverflow.com/questions/766574/using-web-client-in-silverlight – aquaraga 2013-04-24 05:49:49

+0

他从file:// URI运行。就像我上面所说的,我从localhost – Duncan 2013-04-24 05:53:55

回答

1

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

甚至更​​好,你可以尝试使用WCF与服务器交互。

+0

运行有趣。我写了一个快速的小C#应用程序来测试发送和接收请求,似乎工作。假设这仍然是一个相同的问题,我将如何去解决它?我已经尝试了在线上找到的所有(合理)建议,例如添加clientaccesspolicy.xml和crossdomain.xml – Duncan 2013-04-24 06:13:31