Я пытаюсь развернуть веб-сайт, но у меня возникла ошибка в одной из моих форм с загрузкой изображения.
Во-первых, я использую NetworkSolutions для хостинга, и в одной из форм есть вход для загрузки файлов для изображений. Когда я запускаю приложение локально и загружаю изображение на FTP, все работает правильно, однако при развертывании на сервер время ожидания подключения (так как оно зависает на несколько мгновений), тогда я получаю сообщение " Ссылка на объект не установлена для экземпляра объекта. ". Следует отметить, что 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);
}
}
Я ожидаю, что изображение должно быть сохранено в путь, как это происходит локально, однако на сервере я не могу передать это исключение тайм-аута / нуля. Исключением в трассировке стека является случай попадания метода UploadData в строку 89 контроллера регистров (я показываю функцию Submit в контроллере регистров). Поскольку эта проблема возникает на сервере, получение отзывов об ошибке было довольно ограниченным. Удаляя try / catch, я получаю внутреннюю ошибку сервера, при попытке try я получаю исключение ссылки Null.
Одна вещь, которую я попробовал, это удалить строки, предполагая, что что-то здесь было нулевым, но результат тот же:
file.InputStream.Read(buffer, 0, buffer.Length);
file.InputStream.Close();
Любая помощь будет принята с благодарностью.