Je passe mon temps à appeler un service RESTful depuis Silverlight. Je rencontre cette erreur:Utilisation de client Web dans Silverlight
{System.Security.SecurityException ---> System.Security.SecurityException: Security error.
at System.Net.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
at System.Net.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
at System.Net.AsyncHelper.<>c__DisplayClass2.<BeginOnUI>b__0(Object sendState)
--- End of inner exception stack trace ---
at System.Net.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
at System.Net.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
at System.Net.WebClient.OpenReadAsyncCallback(IAsyncResult result)}
Ce qui semble être une erreur courante lors de l'utilisation du client Web. Je l'ai mis en place un clientaccesspolicy.xml
<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*" />
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true" />
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
et je l'ai regardé le silverlight dans Fiddler et il fait une demande sur le site Web et fait obtenir un statut 200 arrière.
public void login(string userName, string password)
{
WebClient client = new WebClient();
Uri uri = new Uri(serverURI + "/clientaccesspolicy.xml");
client.OpenReadCompleted += new OpenReadCompletedEventHandler(login_Complete);
client.OpenReadAsync(uri);
}
private void login_Complete(object sender, OpenReadCompletedEventArgs e)
{
byte[] buffer = new byte[e.Result.Length]; //crashes here with exception
...
}
Je suis plus ou moins à court d'idées. Quelqu'un sait ce que je fais mal? Y at-il un problème avec l'exécution de Silverlight directement à partir d'un fichier: // uri? J'ai supprimé le fichier clientaccesspolicy.xml et conservé uniquement le fichier crossdomain.xml en place et tout bingo a fonctionné. Cela me fait croire que l'erreur est dans le fichier clientaccesspolicy mais j'ai copié cela directement à partir de microsoft. Ce qui donne?
Cela semble logique mais cela n'explique pas vraiment pourquoi la suppression du fichier clientaccesspolicy.xml l'a corrigé. – stimms