我已经将我的asp.net web项目转换为云服务。当我在本地机器上编译它时,它工作得很好。但当我在WindowsAzure上部署它,并以*.cloudapp.net运行它时,它显示以下错误。它不上传或下载任何文件。任何帮助都将不胜感激。谢谢
错误:'/'应用程序中的服务器错误。
找不到文件"E:\approt\uloads\129517348374782571"。
描述:在执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误以及错误在代码中的来源的更多信息。
异常详细信息:System.IO.FileNotFoundException:找不到文件"E:\approt\uploads\129517348374782571"。
来源错误:
在执行当前web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。
堆栈跟踪:
[FileNotFoundException:找不到文件"E:\approt\uploads\129517348374782571"。]System.IO.__Error.WinIOError(Int32错误代码,字符串可能为FullPath)+12892807System.IO.FileInfo.get_Length()+12550108C:\Users\canosum\documents\visual studio 2010\Projects\EsraSon2\EsraSon%2\CourseList.aspx中的EsraSon2.gvPaths_SelectedIndexChanged(对象发送方,EventArgs e)cs:78System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e,布尔原因验证,字符串验证组)+1203System.Web.UI.Page.ProcessRequestMain(布尔值包含同步点之前的阶段,布尔值包含异步点之后的阶段)+3691`
上传代码:
string temp = DateTime.Now.ToFileTime().ToString();
FileUpload1.PostedFile.SaveAs(Server.MapPath("uploads") +"\"+ temp);
BLLFileUpload m_helper = new BLLFileUpload();
DateTime date = DateTime.Now;
m_helper.InsertUploadFiletoDB(temp, FileUpload1.FileName, date, 1, Convert.ToInt32(gvSemesters.SelectedRow.Cells[7].Text));
下载代码:
BLLFileUpload m_helper = new BLLFileUpload();
string tempname = m_helper.getFileRealName(gvPaths.SelectedRow.Cells[2].Text);
string fName = Server.MapPath("uploads")+ "\" + tempname;
FileInfo fi = new FileInfo(fName);
long sz = fi.Length;
Response.ClearContent();
Response.AddHeader("Content-Disposition", string.Format("attachment; filename = {0}", gvPaths.SelectedRow.Cells[3].Text));
Response.AddHeader("Content-Length", sz.ToString("F0"));
Response.TransmitFile(fName);
Response.End();
根据您正在运行的实例数量,由于有多个服务器,因此没有将文件上传到您试图下载的同一台机器的guranttee。
所有需要持久化的东西,比如上传的文件,都应该放到blob存储中。
这是一个示例(对于大文件)
http://social.msdn.microsoft.com/Forums/en/windowsazure/thread/687b2252-8b5e-473d-b522-ebb6b02693b7