2016-07-11 12 views
0

私はASP.NET MVCのWebサイトで作業していましたが、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); 

     } 

私は問題が経路にあると思いますが、私はそれをどのように修正するのか分かりません。誰か助けてください。私はこの種のものでちょうど新しいです。前もって感謝します。また、ウェブサイトがホストされているときにはナビゲーションバーは青色になりますが、ローカルホストでは黒色になります。背景画像はホストされているWebサイトに表示されていません。私を助けてください。ありがとうございました。あなたのcPanelから許可を変更する必要がありますので、あなたは、IISで/プログラムでファイルを作成する権限を設定していない:

答えて

0

このタイプのエラーは場合に

ケース1を次のように起こります。

事例2:ファイルパスの特殊文字が含まれていますが、あなたの場合には、すべてのプレーンテキスト

SOLNがある可能性があります 使用ファイルは、ファイルには、起こっていただきました!間違って把握することができますので、存在しているか否かをチェックするために存在します。すべて最高です....

+0

助けてくれてありがとうございます。私はすでに "このオブジェクトとすべての子オブジェクトに伝播する親からの継承可能なアクセス許可を許可します。ここに明示的に定義されたエントリを含めてください"というアクセス許可を確認しました。しかし、私はまだ同じエラーが発生します。パスは、アップロードされるファイルを一時的に保存するために使用されます。しかし、それはフォルダに保存されません。あなたが私を助けてくれることを願っています。ありがとうございました。 –

+0

あなたのコードは完璧です、あなたはキャッチしようとする必要がありますログにすべてのものを印刷するので、何がうまくいかないか把握することができます。私の経験によれば、関連するものだけがファイルを作成することはできません。 –

+0

こんにちは、それはしばらくしています。 :) お手伝いありがとう。私のコードは今働いている、メールが送信されます。しかし、どういうわけか、あなたのメッセージが送信されたと言っているViewBag!私のメールには既にメッセージが届いています。ここに私のコードです:http://pastie.org/10906936私はあなたが私を助けることを願っています。ありがとうございました。 :) –

関連する問題