2016-07-11 3 views
0

저는 ASP.NET MVC 웹 사이트에서 작업 중이며 GoDaddy에서 호스팅되었습니다. 당신은 내가 만들고있는 웹 사이트의 특정 이메일에 직접 문의 양식을 보낼 수 있습니다. 완벽하게 작동합니다. 양식을 호스팅 할 때까지 문제없이 전송됩니다.GoDaddy에서 호스팅되는 ASP.NET MVC

System.IO.DirectoryNotFoundException: Could not find a part of the path '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); 

     } 

: 여기 내 컨트롤러입니다. 누군가 나를 도와주세요. 나는 이런 종류의 물건들로 막 새로왔다. 미리 감사드립니다. 또한 웹 사이트가 호스팅 될 때 탐색 모음이 파란색으로 바뀌지 만 로컬 호스트에서는 검은 색으로 표시됩니다. 배경 그림이 호스팅 된 웹 사이트에 표시되지 않습니다. 도와 줘요. 고맙습니다. 오류의

답변

0

이러한 유형의 사건을

케이스 가구 1 다음의 발생 : 당신이 당신의 cPanel에서 권한을 변경해야합니다, 그래서 당신은 IIS에 의해 프로그래밍/파일을 만들 수있는 권한을 설정하지 않았습니다.

case2 : 파일 경로는 특수 문자를 포함 할 수는 있지만 경우에

SOLN 모든 일반 텍스트가 : 사용 파일이 파일이 존재 또는 진행 무슨 잘못하지 그래서 당신은 알아낼 수 있는지 여부를 확인하기 위해 존재는. 최선을 다해 ....

+0

도움 주셔서 감사합니다. "부모로부터 상속 가능한 사용 권한을이 개체 ​​및 모든 자식 개체에 전파 할 수 있음을 명시 적으로 여기에 명시 적으로 정의 된 항목과 함께 포함"권한을 이미 확인했습니다. 하지만 여전히 같은 오류가 발생합니다. 경로는 업로드 될 파일을 임시로 저장하는 데 사용됩니다. 하지만 폴더에 저장되지는 ​​않습니다. 선생님이 도와 주실 수 있기를 바랍니다. 고맙습니다. –

+0

코드가 완벽합니다. 잡기를 시도하고 로그의 모든 내용을 인쇄해야하므로 잘못된 점을 파악할 수 있습니다. 내 경험에 의하면 오직 파일과 관련된 것들은 무효라는 것과 관련된 것입니다. –

+0

안녕하십니까, 오래되었습니다. :) 도와 주셔서 감사합니다. 내 코드가 작동하고 메일이 전송됩니다. 그러나 어떻게 든 "당신의 메시지가 보냈습니다!"라고 말할 것 인 ViewBag! 그게 내 이메일에 이미 메시지를 받았다고해도 보이지 않습니다. 여기 내 코드가 있습니다. http://pastie.org/10906936 도와 주시면 좋겠습니다. 고맙습니다. :) –

관련 문제