2014-09-22 60 views
0

我有一个小型MVC 5应用,重点是它在我的本地主机中运行良好,但是当我将它发布到Azure时,某些部分不起作用。例如,我有这样的事情在我看来:将文件保存到App_Data似乎不适用于将应用上传到Azure

<div class="form-group"> 
     <div style="position:relative;"> 
      <label>Image</label> 
      <a class="btn" href="javascript:;"> 
      Choose a file... 
      <input type="file" name="Image" accept="image/jpeg, image/png" 
         style="position:absolute;z-index:2;top:0;left:0;filter: alpha(opacity=0); opacity:0;background-color:transparent;color:transparent;" 
         onchange='$("#upload-image-info").html($(this).val());' /> 
      </a> 
      <span class="label label-info" id="upload-image-info"></span> 
     </div> 
</div> 

所以,后来在我的服务器端我有这样的事情:

public ActionResult ServiceRequest(RequestViewModel rvm, HttpPostedFileBase image = null, HttpPostedFileBase video = null) 
    { 
     tmpPicturePath = Server.MapPath("~/App_Data/Uploads/Images"); 
     tmpVideoPath = Server.MapPath("~/App_Data/Uploads/Videos"); 

     // I check for some properties, and then save the file 
     filename = Path.GetFileName(image.FileName); 
     imagePath = Path.Combine(tmpPicturePath, filename); 
     image.SaveAs(imagePath); 

     // Afterwards, I give the imagePath to SendGrid for attachment to a mail 
     message.AddAttachment(imagePath); 

     // And later in code, I send the mail 
     transportWeb.Deliver(message); 
    } 

请注意,我省略上面的我的代码的某些部分,让我更清楚我想做什么。问题是,在我的本地主机,它工作正常,我可以选择一个文件,并在上传后,通过电子邮件发送。但是,当我在Azure上发布网站并尝试使用相同的功能时,当我按下按钮时似乎正在上传文件,但之后出现错误消息:

错误。处理您的请求时发生错误。

我不知道它是不是无法在服务器上存储文件,或者以后无法读取它们的附件,或者无法发送邮件。任何想法可能是什么问题?

+2

Azure是一个云平台。当您部署到某个Azure服务器时,不保证它将保留在同一台服务器上。如果某个文件不是您的发布软件包的一部分,例如用户将文件上传到您的网站,那么如果您的网站移动到另一台服务器,该文件可以/可能会被删除。所有这一切说,你应该真的使用Azure Blob存储来保存上传到你网站的文件,因为本地存储不是永久的。更多信息 - http://azure.microsoft.com/en-us/services/storage/ – Tommy 2014-09-22 19:52:56

回答

0

我连接到FTP服务器,并手动创建的文件夹,工作正常。

+0

您可以使用'Directory.CreateDirectory(HostingEnvironment.MapPath(@“/ App_Data /”));'以便创建该目录以防它不存在 – sports 2015-03-17 04:38:30

相关问题