(Ошибка сервера в приложении "/". Не удалось найти файл) Ошибка в Windows Azure - PullRequest
0 голосов
/ 05 июня 2011

Я преобразовал свой веб-проект asp.net в облачный сервис.Когда я компилирую его на моей локальной машине, он работает нормально.Но когда я развертываю его в Windows Azure и запускаю как * .cloudapp.net, он показывает следующую ошибку.Он не загружает и не загружает файлы.Любая помощь будет оценена.Спасибо!

Ошибка: `Ошибка сервера в '/' приложении.

Не удалось найти файл 'E: \ Approot \ uploads \ 129517348374782571'.

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.IO.FileNotFoundException: не удалось найти файл 'E: \ Approot \ uploads \ 129517348374782571'.

Ошибка источника:

Создано необработанное исключениево время выполнения текущего веб-запроса.Информацию о происхождении и местонахождении исключения можно определить с помощью приведенной ниже трассировки стека исключений.

Трассировка стека:

[FileNotFoundException: Не удалось найти файл 'E: \ Approot \ uploads \ 129517348374782571'.] System.IO .__ Error.WinIOError (Int32 errorCode, String MaybeFullPath) +12892807 System.IO.FileInfo.get_Length () +12550108 EsraSon2.CourseList.gvPaths_SelectedIndexChanged (отправитель объекта, пользователи \ \ Event \ум \ в: CDocuments \ visual studio 2010 \ Projects \ EsraSon2 \ EsraSon2 \ CourseList.aspx.cs: 78 System.Web.UI.WebControls.GridView.HandleEvent (EventArgs e, Boolean вызывает подтверждение, группа проверки строки) +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 голосов
/ 06 июня 2011

В зависимости от того, сколько экземпляров вы используете, нет гарантии, что файл был загружен на тот же компьютер, с которого вы пытаетесь загрузить, так как имеется несколько серверов.

Все, что вам нужно сохранить, например, загруженные файлы должны идти в хранилище BLOB-объектов.

Вот пример (для больших файлов)

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

...