質問

私は問題の解決策をつなぎ合わせようとしています。基本的に、私はC#4.0を備えたSilverlight 4を使用して、World of Warcraft Armoryにアクセスしています。誰かがこれを行った場合は、working .net 4.0コードを提供してください。

私が実行しようとしているコードは(e.Errorには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!");
            }
        } 

ノート:

  1. C#4.0
  2. ArmoryはXMLファイルですが、リクエストがXML変換をサポートするブラウザからのものではない場合、HTMLに戻ると思います。しかし、私はここまで来ているとは思わない。
  3. Armoryにはクロスドメインポリシーファイルがあります - これはエラーの原因かもしれません(確かではありません!
  4. 生産サーバーにアップロードしました
  5. IIS Webサイトを使用してローカルでテストしています
  6. 私は非常識になります!
  7. Webサイトは、この問題をWebProxyを作成することで克服できるという提案を行っていますが、これを行う方法は最初の手がかりではありません。

誰かがこの挑戦を引き受けて、それが可能であることをすべて見せてくれたら素晴らしいでしょう。最初に非プロキシソリューションを好み、次にプロキシを試してみてください。

エラーの詳細:

e.Error = {System.Security.SecurityException ---> System.Security.SecurityException:セキュリティエラー。 System.net.Browser.BrowserhttpWebRequest.InternalendgetResponse(iasyncresult asyncresult)at System.net.Browser.BrowserhttpWebRequest。<> c__displayclass5。

睡眠中にこれを解決できるインテリジェントなマスターコーダーはいますか?

あなたが助けることができるならありがとう。

役に立ちましたか?

解決 3

解決済み - WCFサービスを使用して、クロスドメインのセキュリティとヘッダーの変更制限によりプロキシとして機能しました。すべてのアドバイスをありがとう。

他のヒント

Silverlightアプリケーションをブラウザで実行する場合、Silverlightアプリケーションは、アプリケーションがインストールされたのと同じドメインからのURLにのみリクエストを行う場合があります。たとえば、Silverlightアプリがからインストールされている場合 http://yoursite.com/yourapp.xap, 、他のURLにWebClientリクエストを行うことしかできません http://yoursite.com/. 。ここでのオプションは、サーバーからWOW Armoryを要求するプロキシスクリプトを作成し、Silverlightアプリにそのプロキシをヒットさせるか、Silverlight Out-Browserを実行して完全な信頼を要求します。

編集:一般的に最良のオプションは、説明されているように、クロスドメインポリシーファイルです ここ. 。悲しいことに、Wowarmory.comがクロスドメインポリシーファイルを実装しているようには見えません。

あなたは正しい軌道に乗っていたので、ユーザーエージェントを設定する必要があります。

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!");
        }
    } 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top