我有一个小型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上发布网站并尝试使用相同的功能时,当我按下按钮时似乎正在上传文件,但之后出现错误消息:
错误。处理您的请求时发生错误。
我不知道它是不是无法在服务器上存储文件,或者以后无法读取它们的附件,或者无法发送邮件。任何想法可能是什么问题?
Azure是一个云平台。当您部署到某个Azure服务器时,不保证它将保留在同一台服务器上。如果某个文件不是您的发布软件包的一部分,例如用户将文件上传到您的网站,那么如果您的网站移动到另一台服务器,该文件可以/可能会被删除。所有这一切说,你应该真的使用Azure Blob存储来保存上传到你网站的文件,因为本地存储不是永久的。更多信息 - http://azure.microsoft.com/en-us/services/storage/ – Tommy 2014-09-22 19:52:56