Moonlight、WebClient 和“调用目标已引发异常”
我正在编写一个小引擎来从一些 .php 文件下载文本,我已经在 Visual c# 中完成了这个引擎,并且没有遇到问题。
我正在这样做:
[ ... ]
WebClient client = null;
try {
client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler( CompleteDownload );
client.AllowReadStreamBuffering = true;
client.DownloadStringAsync( new Uri( "http://blabla/bla.php" ) );
}
catch (Exception e) {
lbl1.Text = e.Message;
}
[ ... ]
这是为了“捕获”下载的数据:
public void CompleteDownloadPcops( object sender, DownloadStringCompletedEventArgs ea ) {
if ( ea.Error == null ) {
try{
lbl1.Text = ea.Result;
}
catch(Exception e) {
lbl2.Text = e.Message;
}
}
}
执行此代码,我在 lbl1
上得到异常异常已由调用的目标抛出
,CompleteDownload
中 lbl1.Text = ea.Result;
的结果。为什么?那么,知道原因后,该如何解决呢?
更多信息:我在 Ubuntu 11.04 平台上的 monodevelop 2.4 中使用 Moonlight。
更新
我已经按照您的推荐将我的系统更新到 MonoDevelop 2.6。现在,执行同样的操作,我在 ea.Error
上收到错误。该消息是(西班牙语):
System.Security.SecurityException ---> System.Security.SecurityException:安全错误。
System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
en System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.
。
我现在使用的完整代码是:
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void btn1_Click(object sender, RoutedEventArgs e)
{
WebClient client = null;
try
{
client = new WebClient();
client.DownloadStringCompleted += new System.Net.DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
client.AllowReadStreamBuffering = true;
client.DownloadStringAsync(new Uri("http://carles.lambdafunction.com/a/try.php"));
}
catch (Exception ex)
{
lbl1.Text = ex.Message;
btn1.Content = "A";
}
}
void client_DownloadStringCompleted(object sender, System.Net.DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
try
{
lbl2.Text = e.Result;
}
catch (Exception ex)
{
lbl1.Text = ex.Message;
lbl2.Text = ex.InnerException.ToString();
btn1.Content = "C";
}
}
else
{
lbl1.Text = e.Error.ToString();
btn1.Content = "B";
txt1.Text = e.Error.ToString();
}
}
}
您可以看到网络调用的输出(到虚拟页面/p/try.php),这非常简单。真的,现在,我迷路了,因为我正在遵循本教程: http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-3-using-networking-to-retrieve-data-and-populate-a-datagrid.aspx .
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的 .xap 位于哪里?
如果您尝试从不同的网站(地址/端口)读取数据,请务必阅读
"Silverlight 中的网络安全访问限制 " 并提供允许应用程序访问您的 Web 服务器的策略文件。
例如,以下 URL 均返回 404(这意味着没有策略允许 Silverlight 或 Moonlight 应用程序访问服务器)
Where is your .xap located ?
If you're trying to read data from a different web site (address / port) then be sure to read
"Network Security Access Restrictions in Silverlight" and provide a policy file that allow the application to access your web server.
E.g. both the following URL returns 404 (which means there's no policy to allow Silverlight or Moonlight applications to access the server)