Frage

Ich versuche, zusammen, um eine Lösung für ein Problem Stück. Im Grunde bin ich mit Silverlight 4 mit C # 4.0, der Welt des warcraft Rüstkammer zuzugreifen. Wenn jemand dies getan hat -. Bitte oh geben Sie bitte die Arbeits 4.0 Code .net

Der Code, den ich zu laufen versucht bin, ist (e.Error enthält einen securtiy Fehler):

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!");
            }
        } 

Weitere Informationen:

  1. C # 4.0
  2. Die Rüstkammer ist eine XML-Datei - aber ich glaube, es kehrt zu html sollte die Anforderung nicht von einem Browser aus, dass unterstützt XML-Transformation. Aber ich glaube nicht, dass ich so weit bin immer.
  3. Die Rüstkammer hat eine Cross-Domain-Richtliniendatei auf sie - dies die Ursache des Fehlers sein kann (nicht sicher
  4. Ich habe auf einem Produktionsserver hochgeladen
  5. Ich teste es IIS-Website lokal mit
  6. Ich werde verrückt!
  7. Websites haben den Vorschlag gemacht, dass dieses Problem durch die Schaffung eines WebProxy überwunden werden können -. Aber ich habe nicht die erste Ahnung, wie dies zu tun

Es wäre toll, wenn jemand auf diese Herausforderung nehmen und zeigen uns alle, dass es möglich ist. Ich würde zuerst eine nicht-Proxy-Lösung bevorzugen, dann versuchen, einen Proxy-Server.

Die Fehlerdetails:

e.Error = {System.Security.SecurityException ---> System.Security.SecurityException: Sicherheitsfehler. bei System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult) bei System.Net.Browser.BrowserHttpWebRequest. <> c__DisplayClass5.

Jeder intelligenter Master Coder gibt, die dies im Schlaf lösen kann?

Vielen Dank, wenn Sie helfen können.

War es hilfreich?

Lösung 3

GELöST - einen WCF-Dienst zu fungieren als Proxy aufgrund Cross-Domain-Sicherheit und Header-Modifikation Einschränkungen verwendet. Vielen Dank für die Beratung.

Andere Tipps

Wenn Sie eine Silverlight-Anwendung in einem Browser ausgeführt wird, die Silverlight-Anwendung kann nur Anfragen in URLs aus der gleichen Domäne wie die Anwendung von installiert wurde. Zum Beispiel, wenn Ihre Silverlight-Anwendung von http://yoursite.com/yourapp.xap installiert ist, können Sie nur WebClient Anfragen an andere URLs auf http://yoursite.com/ machen. Ihre Optionen sind hier entweder einen Proxy-Skript erstellen, das die Anfragen WoW Rüstungen von Ihrem Server, und haben Sie Ihre Silverlight-Anwendung, dass die Proxy-Hit, oder die Silverlight laufen out-of-Browser und voller Vertrauen fordern.

Edit: Im Allgemeinen ist die beste Option ist eine Cross-Domain-Richtliniendatei wie erklärt

Sie auf dem richtigen Weg waren, Sie müssen nur die User-Agenten setzen.

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