gpt4 book ai didi

c# - WebClient.DownloadStringAsync 在 Silverlight 中抛出安全异常

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:51 28 4
gpt4 key购买 nike

第一次使用 Silverlight!按照在线教程。我正在创建一个应用程序,它允许用户使用 WebClient 从 Digg 网站搜索故事,并将它们显示在 Silverlight 控件的数据网格中。

代码如下:

private void btnSearch_Click(object sender, RoutedEventArgs e)
{
string topic = txtTopic.Text;

string diggUrl = String.Format("http://services.digg.com/stories/topic/{0}?count=20&appkey=http%3A%2F%2Fscottgu.com", topic);

WebClient diggService = new WebClient();
diggService.DownloadStringCompleted += new DownloadStringCompletedEventHandler(diggService_DownloadStringCompleted);
diggService.DownloadStringAsync(new Uri(diggUrl));
}

void diggService_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
DisplayStories(e.Result);
}
}

每当我在 diggService_DownloadStringCompleted 事件处理程序上放置一个断点并单击搜索按钮时 e.Error 总是等于 System.Security.SecurityException 没有消息和内部具有“安全错误”消息的相同类型的异常。堆栈跟踪是:

在 System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod,对象状态)

在 System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)

at System.Net.WebClient.GetWebResponse(WebRequest请求,IAsyncResult结果)

在 System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult 结果)

经过大量谷歌搜索后,我看到人们提到了 crossdomain.xml 文件。不完全确定这是什么,但我在运行 Silverlight 控件的 Web 服务器的根目录中添加了一个,并添加了以下文本。没有任何区别:

<?xml version="1.0" ?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>

这是怎么回事?

最佳答案

crossdomain.xml 文件需要放在您尝试从中下载文件的服务器上,而不是放在为 Silverlight 应用程序提供服务的服务器上。

如果服务器没有 crossdomain.xml 文件,则 Silverlight 运行时不允许您的应用程序从该服务器下载数据。默认情况下,它只能访问下载它的服务器(同源策略)。

关于c# - WebClient.DownloadStringAsync 在 Silverlight 中抛出安全异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4265681/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com