none
关于WebClient下载失败的问题 RRS feed

  • 问题

  • 总是出现System.Reflection.TargetInvocationException 比如随便输入一个图片地址

    http://www.515down.com/newsoft/UploadPic/2007-9/200798123416267.jpg 很莫名。。

     

    Code Snippet

    private void Button_Click(object sender, RoutedEventArgs e)
            {
                WebClient downloader = new WebClient();
                downloader.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downloader_DownloadProgressChanged);
                downloader.OpenReadCompleted += new OpenReadCompletedEventHandler(downloader_OpenReadCompleted);
                downloader.OpenReadAsync(new Uri( Input.Text));
            }

     

            void downloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
            {
                btn.Content = "下载";
                BitmapImage bm = new BitmapImage();
                bm.SetSource(e.Result); //总是在这里出现问题 不管什么语句 只要引用了e.Result就出现这个异常
                Picture.Source = bm;
            }

           

            void downloader_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
            {
                btn.Content = e.ProgressPercentage.ToString();
            }
        
            
                
                

     

     

    <UserControl x:Class="TestWebClient.Page"
        xmlns="http://schemas.microsoft.com/client/2007"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Width="800" Height="600">
        <Grid x:Name="LayoutRoot" Background="White" Loaded="LayoutRoot_Loaded">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <TextBox Width="380" Height="50" x:Name="Input" HorizontalAlignment="Center" Grid.Row="0" Grid.Column="0" />
            <Button Width="100" Height="50" x:Name="btn" Content="下载" Grid.Column="1" Click="Button_Click"/>
            <Image x:Name="Picture" Width="100" Height="100" Stretch="Fill" Grid.Row="1" Grid.ColumnSpan="2"/>
        </Grid>
    </UserControl>

     

     


            
            
                
                
            
            
          
           
       

    2008年5月24日 5:12

答案

  • Code Snippet

     

    void downloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
            {
                if (e.Result == null)
                {
                    HtmlPage.Window.Alert("文件不存在");
                    return;
                }
                btn.Content = "下载";
                BitmapImage bm = new BitmapImage();
                bm.SetSource(e.Result);
                Picture.Source = bm;
                Picture.Visibility = Visibility.Visible;
            }

     

     

     

    Picture.Visibility = Visibility.Visible;我说过,这一句你要加上啊!
    呵呵!你不加这句肯定不能出来!你把"Bomb2.jpg"这张图放你的TestWebClient_Web那个目录里面!url为:http://localhost:2337/Bomb2.jpg


    你自己对照着再试试啊!呵呵!明天我再给你代码.你最好自己能对着上面的内容做出来!这样对你才有帮助!

    传给我的另一个项目你建的有问题,明天我给你说说为什么那么建是有问题的!

     

    加油!

    2008年5月26日 9:38
    版主

全部回复

  •  

    好像只支持本站里面的图片,不支持不同域下的图片。
    2008年5月24日 5:22
    版主
  • 是说silverlight的跨域访问是指只支持WebService么?

    本站的图片我试了倒是不抛异常了 但是图片不显示 我还给image外面加了带颜色的border

    看不到图片

    但是如果直接在按钮单击事件中指定uri可以

    Code Snippet

    BitmapImage bm = new BitmapImage();
                bm.UriSource = new Uri(Input.Text);
                Picture.Source = bm;

     

     

    在textbox中输入http://localhost:2337/yizi.jpg 就可以看到了 是我的WebClient用法不对么?

    2008年5月24日 12:01
  • 您的CSDN blog上的例子我复制下来试了下 还是出现到 e.result as stream 就出现问题

     

     

    “System.Reflection.TargetInvocationException”类型的异常在 System.dll 中发生,但未在用户代码中进行处理

    其他信息: [Async_ExceptionOccurred]
    Arguments:
    Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=2.0.30226.2&File=System.dll&Key=Async_ExceptionOccurred

     

    工程文件我发到您EMAIL里了 麻烦有空的时候帮我看看吧 谢谢
    2008年5月25日 5:25
  • 来!

    Picture.Visibility = Visibility.Visible;
    这样写一下,你试试! 不好意思,我租的房子没网线,周六周日不能上网,今天上午又在忙公司的事.呵呵!^_^加油!

    2008年5月26日 6:56
    版主
  • http://silverlight.net/forums/t/13331.aspx
    这个链接,是从老外那里找的,你看看吧!

    在google.com(不是.cn)里输入"BitmapImage Visibility = Visibility.Visible;"就应该可以找到相关的主题!

    如果是不同一个域下的文件,那你就需要加入crossdomain.xml

    不会写的话就在google里面 输入 ourmessage(天使坠)就可以找到我的blog,那里面我写的有.

    加油!不要放弃!我们会顶你的.

    2008年5月26日 7:04
    版主
  •  

    另外还需要注意图片格式问题,

    我的例子都是测试过的,注意调试的时候图片位置和xap文件的相对位置要正确。

    2008年5月26日 7:42
    版主
  • Code Snippet

     

    void downloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
            {
                if (e.Result == null)
                {
                    HtmlPage.Window.Alert("文件不存在");
                    return;
                }
                btn.Content = "下载";
                BitmapImage bm = new BitmapImage();
                bm.SetSource(e.Result);
                Picture.Source = bm;
                Picture.Visibility = Visibility.Visible;
            }

     

     

     

    Picture.Visibility = Visibility.Visible;我说过,这一句你要加上啊!
    呵呵!你不加这句肯定不能出来!你把"Bomb2.jpg"这张图放你的TestWebClient_Web那个目录里面!url为:http://localhost:2337/Bomb2.jpg


    你自己对照着再试试啊!呵呵!明天我再给你代码.你最好自己能对着上面的内容做出来!这样对你才有帮助!

    传给我的另一个项目你建的有问题,明天我给你说说为什么那么建是有问题的!

     

    加油!

    2008年5月26日 9:38
    版主
  • 果然是visibility的问题 呵呵 多谢啊 不然我调到死也调不出来是怎么回事 呵呵 html那个还是不行 不知道为什么 是不是得把jpg文件放到xap里?

    2008年5月26日 11:07
  • 你有没看我给你回的邮件啊!!
    1.我说了你那个html的项目,没有建对.项目要重新建,如果还是不能搞定,中午再找我吧!MSN:cxchen84xi@hotmail.com
    QQ:283440946

     

    2.我WPF用了7个月吧! SL用了5个月吧!不过以前用过Flex 和java Swing.所以对这SL这样的文法有一定的了解吧!呵呵!加油!

     

    2008年5月27日 1:13
    版主