Метод SaveAs настроен на требование корневого пути, а путь «~\\images\\594083964.jpg» не является корневым.

Метод SaveAs настроен на требование корневого пути, а путь «~\images\594083964.jpg» не является корневым. Описание: во время выполнения текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Детали исключения:

System.Web.HttpException: метод SaveAs настроен на требование корневого пути, а путь «~\images\594083964.jpg» не является корневым.

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

Line 27:     {
Line 28: 
Line 29:         fu1.SaveAs(@"~\\images\\" + i + fu1.FileName.Substring(fu1.FileName.Length - 4, 4));
Line 30: path = "~\\images\\"+i + fu1.FileName.Substring(fu1.FileName.Length-4,4);
Line 31: }

Исходный файл: e:\PEOPLE\Ravi\new data\WebSite1\signup.aspx.cs Строка: 29


person Community    schedule 29.08.2009    source источник
comment
Я думаю, вы можете предположить, что он не хочет ошибки;)   -  person MPritchard    schedule 29.08.2009


Ответы (1)


Путь, по которому вы сохраняете, является относительным URL-адресом. Вам необходимо сохранить локальный путь к файлу (или полный сетевой путь).

Пытаться:

string relativePath = @"~\images\"+ i + Path.GetExtension(fu1.FileName);
fu1.SaveAs(Server.MapPath(relativePath));

(Path.GetExtension(string) также будет обрабатывать расширения файлов, которые не состоят из 3 символов)

person MPritchard    schedule 29.08.2009
comment
Хотя вы должны использовать / в относительном пути, а не \. - person Guffa; 18.04.2012
comment
@Guffa Ты уверен, что это имеет значение? - person MPritchard; 01.08.2012
comment
Этот метод может быть достаточно хорош для преобразования неправильных разделителей в правильные, но нет причин полагаться на это поведение (которое может измениться), когда вместо этого вы можете так же легко использовать правильные разделители. - person Guffa; 01.08.2012