我正在尝试拼凑出一个问题的解决方案。 基本上,我使用带有 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!");
}
}
注意事项:
- C# 4.0
- 军械库是一个 XML 文件 - 但我相信如果请求不是来自支持 XML 转换的浏览器,它会恢复为 html。但我认为我还没有走到这一步。
- 军械库上有一个跨域策略文件 - 这可能是错误的原因(不确定!
- 我已经上传到生产服务器
- 我正在使用 IIS 网站在本地测试它
- 我要疯了!
- 网站建议可以通过创建 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 似乎没有实现跨域策略文件。
