Web 客户端请求期间发生异常

本文关键字:异常 客户端 请求 Web | 更新日期: 2023-09-27 18:32:45

WinForm Application Code-

FileSystemWatcher fsWatcher = new FileSystemWatcher();
fsWatcher.Created += new FileSystemEventHandler(OnCreated);
    public void OnCreated(object sender, FileSystemEventArgs e)
    {
        try
        {
            var wc = new WebClient();
            byte[] response = 
                    wc.UploadFile("http://localhost:54802/Home/ReceiveAudio/", 
                                  "POST", e.FullPath);
            string s = System.Text.Encoding.ASCII.GetString(response);
            MessageBox.Show(s);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

MVC控制器操作方法-

    [HttpPost]
    public JsonResult ReceiveAudio()
    {
        return Json("Success", JsonRequestBehavior.AllowGet);
    }

我收到错误 - An exception occurred during a WebClient request.

有什么帮助吗?

Web 客户端请求期间发生异常

在窗口侧:

private void uploadButton_Click(object sender, EventArgs e)
{
    var openFileDialog = new OpenFileDialog();
    var dialogResult = openFileDialog.ShowDialog();    
    if (dialogResult != DialogResult.OK) return;              
    Upload(openFileDialog.FileName);
}
private void Upload(string fileName)
{
    var client = new WebClient();
    var uri = new Uri("https://www.yoursite.com/UploadFile/");  
    try
    {
        client.Headers.Add("fileName", System.IO.Path.GetFileName(fileName));
        var data = System.IO.File.ReadAllBytes(fileName);
        client.UploadDataAsync(uri, data);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

在服务器端,您应该使用 WebApi:

[HttpPost]
public async Task<object> UploadFile()
{
    var file = await Request.Content.ReadAsByteArrayAsync();
    var fileName = Request.Headers.GetValues("fileName").FirstOrDefault();
    var filePath = "/upload/files/";
    try
    {
        File.WriteAllBytes(HttpContext.Current.Server.MapPath(filePath) + fileName, file);           
    }
    catch (Exception ex)
    {
        // ignored
    }
    return null;
}