Skip to main content
 首页 » 编程设计

c#之访问魔兽世界军械库WebClient安全报错

2024年02月03日29qq号

我正在尝试拼凑出一个问题的解决方案。 基本上,我使用带有 C# 4.0 的 Silverlight 4 来访问魔兽世界。 如果有人这样做 - 请哦,请提供有效的 .net 4.0 代码。

我尝试运行的代码是(e.Error 包含一个安全错误):

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. 军械库是一个 XML 文件 - 但我相信如果请求不是来自支持 XML 转换的浏览器,它会恢复为 html。但我认为我还没有走到这一步。
  3. 军械库上有一个跨域策略文件 - 这可能是错误的原因(不确定!
  4. 我已经上传到生产服务器
  5. 我正在使用 IIS 网站在本地测试它
  6. 我要疯了!
  7. 网站建议可以通过创建 WebProxy 来解决这个问题 - 但我不知道如何做到这一点。

如果有人能够接受这一挑战并向我们展示一切可能性,那就太好了。我更喜欢先使用非代理解决方案,然后尝试使用代理。

错误详情:

e.Error = {System.Security.SecurityException ---> System.Security.SecurityException:安全错误。 在 System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) 在 System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5。

有哪位聪明的编码大师能在睡梦中解决这个问题?

谢谢,如果你能帮忙。

请您参考如下方法:

在浏览器中运行 Silverlight 应用程序时,Silverlight 应用程序可能只会从安装该应用程序的同一域向 URL 发出请求。例如,如果您的 silverlight 应用程序是从 http://yoursite.com/yourapp.xap 安装的,您只能向 http://yoursite.com/上的其他 URL 发出 WebClient 请求。您的选择是创建一个从您的服务器请求 WoW 军械库的代理脚本,并让您的 silverlight 应用程序访问该代理,或者在浏览器外运行 silverlight 并请求完全信任。

编辑:通常最好的选择是跨域策略文件,如说明here .遗憾的是,wowarmory.com 似乎没有实现跨域策略文件。