Question

Je suis en train de rassembler une solution à un problème. Fondamentalement, je suis en utilisant Silverlight 4 avec C # 4.0 pour accéder au monde du manège militaire de warcraft. Si quelqu'un a fait cela -. S'il vous plaît oh s'il vous plaît fournir le travail .net Code 4.0

Le code que je utiliser est (e.Error contient une erreur securtiy):

private void button10_Click(object sender, RoutedEventArgs e)
        {
            string url = @"http://eu.wowarmory.com/guild-info.xml?r=Eonar&n=Gifted and Talented"; 
            WebClient wc = new WebClient();

            // HOW DO I ADD A USER AGENT STRING (RESPONSE MAY VARY (I.E. HTML VS XML) IF PAGE THINKS CALL IS NOT CAPABABLE OF SUPPORTING XML TRANSFORMATIONS) 
            //wc.ResponseHeaders["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)";

            wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
            wc.DownloadStringAsync(new Uri(url));    
        }

        void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                string result = e.Result;

                XDocument ArmouryXML = XDocument.Parse(result);

                ShowGuildies(ArmouryXML);
            }
            else
            {
                MessageBox.Show("Something is complaining about security but not sure what!");
            }
        } 

Notes:

  1. C # 4.0
  2. Le manège militaire est un fichier XML - mais je crois qu'il revient à la demande html devrait pas être d'un navigateur qui supporte de transformation XML. Mais je ne pense pas que je reçois ce jour.
  3. Le manège militaire a un fichier de stratégie de domaine croix là-dessus - cela peut être la cause de l'erreur (pas sûr
  4. Je l'ai téléchargé sur un serveur de production
  5. Je le tester localement en utilisant le site web IIS
  6. Je vais fou!
  7. Des sites Web ont fait la suggestion que ce problème peut être résolu en créant un WebProxy -. Mais je ne le premier indice comment faire

Ce serait formidable si quelqu'un pouvait relever ce défi et nous montrer tout ce qu'il est possible. Je préfère une solution non-proxy, puis essayez un proxy.

Les détails de l'erreur:

e.Error = {System.Security.SecurityException ---> System.Security.SecurityException: erreur de sécurité.    à System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult)    à System.Net.Browser.BrowserHttpWebRequest. <> c__DisplayClass5.

Les codeurs maîtres intelligents là-bas qui peuvent résoudre ce dans leur sommeil?

Merci si vous pouvez aider.

Était-ce utile?

La solution 3

RESOLU - utilisé un service WCF pour agir en tant que proxy en raison de la sécurité inter-domaine et les restrictions de modification d'en-tête. Merci pour tous les conseils.

Autres conseils

Lors de l'exécution d'une application Silverlight dans un navigateur, l'application silverlight ne peut faire des demandes à des URL à partir du même domaine que l'application a été installé. Par exemple, si votre application silverlight est installé à partir http://yoursite.com/yourapp.xap, vous ne pouvez faire des demandes WebClient à d'autres URL sur http://yoursite.com/. Vos options ici sont soit créer un script proxy qui demande à l'Armurerie WoW de votre serveur, et que votre application silverlight a frappé ce proxy, ou exécuter le silverlight hors navigateur et demander la pleine confiance.

Edit: En général, la meilleure option est un fichier de stratégie inter-domaines comme expliqué

vous étiez sur la bonne voie, il vous suffit de définir l'agent utilisateur.

private void button10_Click(object sender, RoutedEventArgs e)
    {
        string url = @"http://eu.wowarmory.com/guild-info.xml?r=Eonar&n=Gifted and Talented"; 
        WebClient wc = new WebClient();

        // HOW DO I ADD A USER AGENT STRING (RESPONSE MAY VARY (I.E. HTML VS XML) IF PAGE THINKS CALL IS NOT CAPABABLE OF SUPPORTING XML TRANSFORMATIONS) 
        //wc.ResponseHeaders["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)";

        wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)";
        wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
        wc.DownloadStringAsync(new Uri(url));    
    }

    void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error == null)
        {
            string result = e.Result;

            XDocument ArmouryXML = XDocument.Parse(result);

            ShowGuildies(ArmouryXML);
        }
        else
        {
            MessageBox.Show("Something is complaining about security but not sure what!");
        }
    } 
scroll top