ASP.NET MVC托管在GoDaddy中

时间:2016-07-11 02:59:18

标签: c# asp.net-mvc path asp.net-mvc-5 hosting

我一直在ASP.NET MVC网站上工作,并且已经在GoDaddy中托管了。您可以直接将查询表单发送到我正在制作的网站中的特定电子邮件,它的工作非常正常,表单发送没有问题,直到我托管它。每当我尝试发送表单时,我都会收到此错误:

  

System.IO.DirectoryNotFoundException:找不到部分内容   路径   ' G:\ PleskVhosts \ sellurs.com \的httpdocs \程序App_Data \上传\ 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);

        } 

我认为问题出在路径上,但我不确定如何修复它。有人请帮帮我。我对这种东西很新。先感谢您。而且,当网站被托管时,导航栏变为蓝色,但在本地主机中它变成黑色。并且背景图片未显示在托管网站中。 Pleeease帮助我。谢谢。

1 个答案:

答案 0 :(得分:0)

以下情况会发生此类错误

case1:您尚未设置以编程方式/通过IIS创建文件的权限,因此您必须更改cpanel的权限。

case2:文件路径可能包含特殊字符但在您的情况下有所有纯文本

溶液:  存在使用文件来检查文件是否存在,这样你就可以弄清楚是什么错误了。一切都好....