c#Webclient.UploadData在本地工作,但在服务器上失败

c#Webclient.UploadData在本地工作,但在服务器上失败,c#,model-view-controller,ftp,upload,webclient,C#,Model View Controller,Ftp,Upload,Webclient,我正在尝试部署一个网站,但我的一个表单有一个图像上传错误 首先,我使用NetworkSolutions进行托管,其中一个表单有一个用于图像的文件上传输入。当我在本地运行应用程序并将映像上载到FTP时,一切正常,但是当我部署到服务器时,连接似乎超时(因为它会挂起几分钟),然后我收到消息“Object reference not set to a instance of a Object.”。我应该注意的一件事是,此服务器上没有设置SSL,但我使用的是不安全的端口 [HttpPost] [V

我正在尝试部署一个网站,但我的一个表单有一个图像上传错误

首先,我使用NetworkSolutions进行托管,其中一个表单有一个用于图像的文件上传输入。当我在本地运行应用程序并将映像上载到FTP时,一切正常,但是当我部署到服务器时,连接似乎超时(因为它会挂起几分钟),然后我收到消息“Object reference not set to a instance of a Object.”。我应该注意的一件事是,此服务器上没有设置SSL,但我使用的是不安全的端口

[HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Submit(RegistrationViewModel viewModel)
    {
        if (!ModelState.IsValid)
        {
            return RedirectToAction("Index", viewModel);
        }
        if (Request.Files.Count > 0)
        {

            string path = String.Empty;
            HttpPostedFileBase file = Request.Files[0];

            if (file != null && file.ContentLength > 0)
            {
                string fileName = Guid.NewGuid().ToString() + Path.GetExtension(file.FileName); // Path.GetFileName(file.FileName);

                try
                {
                    using (WebClient client = new WebClient())
                    {
                        client.Credentials = new NetworkCredential("***", "***");

                        byte[] buffer = new byte[file.ContentLength];
                        file.InputStream.Read(buffer, 0, buffer.Length);
                        file.InputStream.Close();


                        path = "ftp://***.***.com:21/pics/" + fileName;
                        client.UploadData(path, buffer);

                    }
                }
                catch (WebException ex)
                {
                    string status = ((FtpWebResponse)ex.Response).StatusDescription;

                }
            }

            Context.Registrations.Add(new Registration
            {
                FirstName = viewModel.FirstName,
                LastName = viewModel.LastName,
                Email = viewModel.Email,
                PhoneNumber = viewModel.PhoneNumber,
                Age = viewModel.Age,
                ImagePath = path,
                CreatedDate = DateTime.Now
            });

            await Context.SaveChangesAsync();

            ConfirmationViewModel confirmViewModel = new ConfirmationViewModel
            {
                FirstName = viewModel.FirstName,
                LastName = viewModel.LastName,
                Email = viewModel.Email,
                PhoneNumber = viewModel.PhoneNumber
            };

            return RedirectToAction("Confirm", "Register", confirmViewModel);
        }
}

任何帮助都将不胜感激。

我已经找到了未设置为对象实例的对象引用,异常来自catch语句。这个异常似乎不是WebException,或者至少我刚才给出的响应不是FtpWebResponse。(由于每次都必须部署,因此调试非常困难),但由于未知原因,我仍在超时。

我已成功将映像从服务器保存到服务器!问题归结为专门从web服务器域向ftp域发出的请求


NetworkSolution选项中隐藏的是文件夹权限(任何查看的人都可以获得安全/密码保护),在允许对所需目录进行写访问后,我切换了方法,使用HttpPostedFileBase将文件直接保存到服务器,并成功!我希望我能从一开始就找到这个选项,这样可以省去几个小时的麻烦。

您必须提供有关异常和代码中断行号的更多详细信息。。。!更新了原来的帖子。“堆栈跟踪中的异常是当方法UploadData命中寄存器控制器第89行时(im显示寄存器控制器中的Submit函数)”我继续测试。我尝试使用具有完全管理员权限的主FTP帐户,但也出现了相同的问题。我尝试写入网站所在的目录,而不是通过FTP,但出现了拒绝访问错误。因此,我似乎只限于通过FTP。这个问题已经持续了相当长的一段时间,每次我尝试在服务器上测试时,每次发布至少需要10分钟。
file.InputStream.Read(buffer, 0, buffer.Length);
file.InputStream.Close();