UploadFileAsync在silverlight 5中不支持(您是否缺少汇编参考)

本文关键字:是否 汇编 参考 silverlight 不支持 UploadFileAsync | 更新日期: 2023-09-27 17:54:23

我使用Silverlight-5, VS-2010 ExpressSP-1,我是c#初学者,并试图在浏览按钮上上传文件单击。我的GUI是这样的http://prntscr.com/34tevq但是当我试图在我的代码中写这一行

client.UploadFileAsync(filename, fileChunks[index]);(其中WebClient client = new WebClient();),然后在UploadFileAsync下给出红线,错误为:

'System.Net.WebClient' does not contain a definition for 'UploadFileAsync' and no extension method 'UploadFileAsync' accepting a first argument of type 'System.Net.WebClient' could be found (are you missing a using directive or an assembly reference?) 
我的c#代码是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.IO;
namespace shekhar_Final
{
    public partial class MainPage : UserControl
    {
        List<byte[]> fileChunks;
        int chunkSize, index;
        string filename;
        double filesize, senddata;

        public MainPage()
        {
            InitializeComponent();
            chunkSize = 4096;
            filesize = 0;
            index = 0;
            senddata = 0;
            filename=null ;
            fileChunks=null;

        }

        public void browse_button_click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            if ((bool)ofd.ShowDialog())
            {
                filename = ofd.File.Name;
                FileStream fs = ofd.File.OpenRead();
                filesize = (double)fs.Length;
                textBox1.Text = filename;
                index = 0;
                senddata = 0;
                byte[] file = new byte[fs.Length];
                fs.Read(file, 0, file.Length);
                ConvertToChunks(file);
                prgUpload.Maximum = fileChunks.Count;
                prgUpload.Value = 0;
                uploadChunks(index);
            }
        }
        private void ConvertToChunks(byte[] imagefile)
        {
            double totalChunks = Math.Ceiling((double)imagefile.Length / (double)chunkSize);
            fileChunks = new List<byte[]>();
            for (int i = 0; i < totalChunks; i++)
            {
                byte[] chunks;
                int startIndex = i * chunkSize;
                if (startIndex + chunkSize > imagefile.Length)
                    chunks = new byte[imagefile.Length - startIndex];
                else
                    chunks = new byte[chunkSize];
                Array.Copy(imagefile,startIndex,chunks,0,chunks.Length);
                fileChunks.Add(chunks);
            }          
        }
        private void uploadChunks(int index)
        {
            WebClient client = new WebClient();
            client.UploadFileAsync(filename, fileChunks[index]);
           //this UploadFileAsync is not even in sky blue color in my VS code.
        }
        private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
        {
            //to be done
        }
    }
}

是否缺少汇编参考?是吗?然后呢?那太好了,谢谢。

UploadFileAsync在silverlight 5中不支持(您是否缺少汇编参考)

Silverlight的WebClient没有一个叫做UploadFileAsync的方法。但是桌面运行时可以。

您应该在WebClient上使用OpenWriteAsync,然后处理OpenWriteCompleted事件处理程序并写入流。

或者,您可以找到WebClient的替代解决方案,例如使用较低级别的HttpWebRequest类或第三方库。