2016-07-11 18 views
0

Ich habe auf einer ASP.NET MVC-Website gearbeitet und es wurde in GoDaddy gehostet. Sie können ein Anfrageformular direkt an eine bestimmte E-Mail in der Website senden, die ich mache. Es funktioniert einwandfrei, das Formular sendet ohne Probleme, bis ich es gehostet habe. Jedes Mal, wenn ich versuche, ein Formular zu schicken, ich erhalte immer diese Fehlermeldung:ASP.NET MVC gehostet in GoDaddy

System.IO.DirectoryNotFoundException: Could not find a part of the path 'G:\PleskVhosts\sellurs.com\httpdocs\App_Data\uploads\SOS.docx'

Aber wenn ich versuche, mein Projekt ausführen, die nicht gehostet wird, wird das Formular noch ohne ein Problem zu senden. Warum das? Hier ist mein Controller:

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); 

     } 

Ich denke, das Problem in der Wegfindung ist, aber ich bin nicht wirklich sicher, wie es zu beheben. Jemand bitte hilf mir. Ich bin neu mit dieser Art von Sachen. Vielen Dank im Voraus. Auch wenn die Website gehostet wurde, wird die Navigationsleiste blau, aber auf dem lokalen Host ist sie schwarz. Und das Hintergrundbild wird auf der gehosteten Website nicht angezeigt. Bitte hilf mir. Vielen Dank.

Antwort

0

diese Art von Fehler auftreten, falls folgende

case1: Sie haben nicht gesetzt Erlaubnis Datei programmatisch/von IIS zu erstellen, so dass Sie die Erlaubnis von cPanel zu ändern.

case2: Dateipfad kann Sonderzeichen enthalten, aber in Ihrem Fall gibt es alle Klartext

Soln: Verwendung Datei zu überprüfen existieren, ob Datei vorhanden ist oder nicht, so können Sie herausfinden, was falsch geht. alles Gute ....

+0

Danke für die Hilfe Sir. Ich habe bereits die Berechtigung "Vererbbare Berechtigungen von übergeordneten Objekten für die Weitergabe an dieses Objekt und alle untergeordneten Objekte. Fügen Sie diese mit den hier explizit definierten Einträgen ein" aktiviert. Aber ich bekomme immer noch den gleichen Fehler. Der Pfad wird nur zum vorübergehenden Speichern der Dateien verwendet, die hochgeladen werden. Aber es wird nicht im Ordner gespeichert werden. Hoffe, du könntest mir helfen, Sir. Vielen Dank. –

+0

Ihr Code ist perfekt, Sie müssen versuchen, fangen und drucken Sie alle Dinge im Protokoll, so dass Sie herausfinden können, was schief geht. nach meiner Erfahrung gibt es nur Erlaubnis verwandte Dinge sind ungültig, um eine Datei zu erstellen. –

+0

Hallo Sir, es ist schon eine Weile her. :) Danke für die Hilfe. Mein Code funktioniert jetzt, die Mail sendet. Aber irgendwie wird der ViewBag sagen "Deine Nachricht wurde gesendet!" wird nicht angezeigt, obwohl ich die Nachricht bereits in meiner E-Mail erhalten habe. Hier ist mein Code Sir: http://pastie.org/10906936 Ich hoffe du kannst mir helfen. Vielen Dank. :) –