WedX - журнал о программировании и компьютерных науках

ASP.NET MVC, размещенный в GoDaddy

Я работал над веб-сайтом ASP.NET MVC, и он был размещен в GoDaddy. Вы можете напрямую отправить форму запроса на определенное электронное письмо на веб-сайте, который я создаю. Он работает отлично, форма отправляется без проблем, пока я ее не разместил. Всякий раз, когда я пытаюсь отправить форму, я продолжаю получать эту ошибку:

System.IO.DirectoryNotFoundException: не удалось найти часть пути «G:\PleskVhosts\sellurs.com\httpdocs\App_Data\uploads\SOS.docx»

Но когда я пытаюсь запустить свой проект, который не размещен, форма по-прежнему отправляется без проблем. Почему это? Вот мой контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Index(EmailFormModel model, IEnumerable<HttpPostedFileBase> files)
    {
        if (ModelState.IsValid)
        { 
            List<string> paths = new List<string>();

            foreach (var file in files)
            {
                if (file.ContentLength > 0)
                {
                    var fileName = Path.GetFileName(file.FileName);
                    var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
                    file.SaveAs(path);
                    paths.Add(path);
                }
            }

                var message = new MailMessage();
                foreach (var path in paths)
                {
                    var fileInfo = new FileInfo(path);
                    var memoryStream = new MemoryStream();
                    using (var stream = fileInfo.OpenRead())
                    {
                        stream.CopyTo(memoryStream);
                    }
                    memoryStream.Position = 0;
                    string fileName = fileInfo.Name;
                    message.Attachments.Add(new Attachment(memoryStream, fileName));
                }

                //Rest of business logic here
                string EncodedResponse = Request.Form["g-Recaptcha-Response"];
                bool IsCaptchaValid = (ReCaptcha.Validate(EncodedResponse) == "True" ? true : false);
                if (IsCaptchaValid)
                {

                    var body = "<p><b>Email From:</b> {0} ({1})</p><p><b>Subject:</b> {2} </p><p><b>Message:</b></p><p>{3}</p><p><b>Description:</b></p><p>{4}</p>";
                    message.To.Add(new MailAddress("***"));  // replace with valid value 
                    message.From = new MailAddress("***");  // replace with valid value
                    message.Subject = "(Inquire)";
                    message.Body = string.Format(body, model.FromName, model.FromEmail, model.FromSubject, model.Message, model.Desc);
                    message.IsBodyHtml = true;
                    using (var smtp = new SmtpClient())
                    {
                        var credential = new NetworkCredential
                        {
                            UserName = "***",  // replace with valid value
                            Password = "***"  // replace with valid value
                        };
                        smtp.Credentials = credential;
                        smtp.Host = "smtp.live.com";
                        smtp.Port = 587;
                        smtp.EnableSsl = true;
                        smtp.SendCompleted += (s, e) =>
                        {
                            //delete attached files
                            foreach (var path in paths)
                                System.IO.File.Delete(path);
                        };
                        await smtp.SendMailAsync(message);
                        ViewBag.Message = "Your message has been sent!";

                        ModelState.Clear();
                        return View("Index");
                    }
                } else

                {
                    TempData["recaptcha"] = "Please verify that you are not a robot!";
                }

            } return View(model);

        } 

Я думаю, что проблема в пути, но я не совсем уверен, как это исправить. Кто-нибудь, пожалуйста, помогите мне. Я просто новичок в таких вещах. Заранее спасибо. А также, когда веб-сайт был размещен, панель навигации становится синей, но на локальном хосте она черная. И фоновое изображение не отображается на размещенном веб-сайте. Пожалуйста, помогите мне. Спасибо.


Ответы:


1

этот тип ошибки возникает в следующем случае

случай 1: вы не установили разрешение на создание файла программно/с помощью IIS, поэтому вам нужно изменить разрешение на своей cpanel.

case2: путь к файлу может содержать специальный символ, но в вашем случае это обычный текст

Soln: используйте файл существующий, чтобы проверить, существует ли файл или нет, чтобы вы могли понять, что происходит не так. всего наилучшего....

11.07.2016
  • Спасибо за помощь, сэр. Я уже проверил Разрешить наследуемые разрешения от родителя для распространения на этот объект и все дочерние объекты. Включите их с записями, явно определенными здесь разрешением. Но я все еще получаю ту же ошибку. Путь просто используется для временного хранения файлов, которые будут загружены. Но он не будет сохранен в папке. Надеюсь, вы могли бы мне помочь, сэр. Спасибо. 11.07.2016
  • ваш код идеален, вы должны использовать try catch и распечатать все вещи в журнале, чтобы вы могли понять, что идет не так. согласно моему опыту, для создания файла недействительны только вещи, связанные с разрешением. 13.07.2016
  • Привет, сэр, это было давно. :) Спасибо вам за помощь. Мой код работает сейчас, почта отправляется. Но каким-то образом ViewBag сообщит, что Ваше сообщение отправлено! не отображается, хотя я уже получил сообщение по электронной почте. Вот мой код, сэр: pastie.org/10906936 Надеюсь, вы сможете мне помочь. Спасибо. :) 14.07.2016
  • попробуйте использовать этот «HttpContext.Current.Server.MapPath()» 26.07.2016
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]