Ошибка безопасности WebClient При доступе к World of Warcraft Omerry

StackOverflow https://stackoverflow.com/questions/2900182

Вопрос

Я пытаюсь собрать решение проблемы с проблемой. По сути, я использую Silverlight 4 с C # 4.0 для доступа к World of Warcraft Omerry. Если кто-то сделал это - пожалуйста, пожалуйста, предоставьте работу .NET 4.0.

Код, который я пытаюсь запустить (E.Error содержит ошибку SEUTIY):

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 - но я считаю, что это возвращается к HTML, если запрос не будет из браузера, который поддерживает преобразование XML. Но я не думаю, что я получаю это далеко.
  3. Оружейной файл политики поперечной области на нем - это может быть причиной ошибки (не уверена!
  4. Я загрузил на производственный сервер
  5. Я проверяю это локально, используя веб-сайт IIS
  6. Я иду с ума!
  7. Сайты сделали предложение, что эта проблема может быть преодолена путем создания WebProxy - но у меня нет первого ключа, как это сделать.

Было бы здорово, если бы кто-то мог взять на себя этот вызов и покажи нам все возможное. Я предпочел сначала не прокси-раствор, затем попробуйте прокси.

Подробности об ошибке:

E.Error = {System.security.securityException ---> System.security.securityException: ошибка безопасности. В System.net.Browser.BrowserHttpwebrequest.internalendgetResponse (IASYNCREST ASYNCRESSULT) в System.net.Browser.BrowserHttpwebRequest. <> C__displayClass5.

Любые интеллектуальные магистральные кодеры там, кто может решить это во сне?

Спасибо, если вы можете помочь.

Это было полезно?

Решение 3

Решено - использовал службу WCF для выступления в качестве прокси-сервера из-за ограничений безопасности доменов и модификации заголовка. Спасибо за все советы.

Другие советы

При запуске приложения Silverlight в браузере приложение Silverlight может сделать запросы к URL-адресам из того же домена, что и приложение было установлено. Например, если ваше приложение Silverlight установлено из http://yoursite.com/yourapp.xap, вы можете сделать только запросы WebClient на другие URL на http://yoursite.com/. Отказ Ваши параметры здесь либо создают прокси-скрипт, который запрашивает WOW OMRORY с вашего сервера, а приложение Silverlight ударило в это прокси или запустить серебристый браузер и запросить полный доверие.

Редактировать: Обычно лучший вариант - это файл политики кросс-домена, как объяснено здесь. Отказ К сожалению, это не появляется, что 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