(Windows Azure中的“/”应用程序中的服务器错误。无法找到文件)错误

时间:2011-06-05 08:37:03

标签: c# asp.net windows azure cloud-hosting

我已将我的asp.net网络项目转换为Cloud Service。当我在我的本地机器上编译它时,它工作正常。但是当我在Windows Azure上部署它并将其作为* .cloudapp.net运行时,它会显示以下错误。它不会上传或下载任何文件。任何帮助将不胜感激。谢谢!

错误:`'/'应用程序中的服务器错误。

无法找到文件'E:\ approot \ uploads \ 129517348374782571'。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.IO.FileNotFoundException:找不到文件'E:\ approot \ uploads \ 129517348374782571'。

来源错误:

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

堆栈追踪:

[FileNotFoundException:找不到文件'E:\ approot \ uploads \ 129517348374782571'。]    System.IO .__ Error.WinIOError(Int32 errorCode,String maybeFullPath)+12892807    System.IO.FileInfo.get_Length()+ 12550108    C:\ Users \ canosum \ documents \ visual studio 2010 \ Projects \ EsraSon2 \ EsraSon2 \ CourseList.aspx.cs中的EsraSon2.CourseList.gvPaths_SelectedIndexChanged(Object sender,EventArgs e):78    System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e,Boolean causeValidation,String validationGroup)+1203    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+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();

1 个答案:

答案 0 :(得分:0)

根据您运行的实例数量,由于有多台服务器,因此无法保证文件已上载到您尝试下载的同一台计算机上。

您需要保留的所有内容(例如上传的文件)都应转到blob存储。

以下是一个示例(适用于大型文件)

http://social.msdn.microsoft.com/Forums/en/windowsazure/thread/687b2252-8b5e-473d-b522-ebb6b02693b7