Domanda

Sto cercando di mettere insieme una soluzione ad un problema. Fondamentalmente sto usando Silverlight 4 con C # 4.0 per accedere al mondo di Warcraft armeria. Se qualcuno ha fatto questo -. Si prega oh si prega di fornire il lavoro .net codice di 4.0

Il codice che sto tentando di eseguire è (e.Error contiene un errore di 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!");
            }
        } 

Note:

  1. C # 4.0
  2. L'armeria è un file XML - ma credo che ritorna in html dovrebbe la richiesta non sia da un browser che supporti la trasformazione XML. Ma non credo che sto ottenendo fino a questo punto.
  3. L'armeria dispone di un file di criteri interdominio su di essa - questa potrebbe essere la causa dell'errore (non sono sicuro
  4. Ho caricato su un server di produzione
  5. sto testando in locale utilizzando il sito IIS
  6. Vado pazzo!
  7. siti web hanno fatto l'idea che questo problema può essere superato con la creazione di un WebProxy -. Ma non ho il primo indizio come fare questo

Sarebbe bello se qualcuno potesse raccogliere questa sfida e ci mostrano tutto ciò che è possibile. Preferirei una soluzione non-proxy prima, quindi provare un proxy.

I dettagli di errore:

e.Error = {System.Security.SecurityException ---> System.Security.SecurityException: errore di sicurezza.    a System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult)    a System.Net.Browser.BrowserHttpWebRequest. <> c__DisplayClass5.

Qualsiasi maestri programmatori intelligenti là fuori che possono risolvere questa nel sonno?

Grazie, se si può aiutare.

È stato utile?

Soluzione 3

RISOLTO - ha utilizzato un servizio WCF per agire come un proxy a causa di restrizioni di sicurezza del dominio e di modifica dell'intestazione croce. Grazie per tutti i consigli.

Altri suggerimenti

Quando si esegue un'applicazione Silverlight in un browser, l'applicazione Silverlight può fare solo richieste a URL dallo stesso dominio come l'applicazione è stata installata da. Per esempio, se la vostra applicazione Silverlight è installato da http://yoursite.com/yourapp.xap, è possibile effettuare solo le richieste di WebClient ad altri URL su http://yoursite.com/. Le opzioni qui sono o creare uno script proxy che chiede alla WoW Armory dal server, ed avere la vostra applicazione Silverlight ha colpito che procura, o eseguire il silverlight out-of-browser e richiedere piena fiducia.

Modifica: In genere l'opzione migliore è un file di criteri dei domini come spiegato qui . Purtroppo, non sembra che wowarmory.com implementa il file di criteri dei domini.

eri sulla strada giusta, basta impostare l'user-agent.

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!");
        }
    } 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top