1>Друг сегодня задал вопрос:
Почему при использовании элемента управления Файл для чтения путей картинок, документов и других файлов нет ошибки, а при чтении видеофайлов (типа rmvb и т.п.) возникает ошибка, что страница не может быть отображена.
Фрагмент кода выглядит следующим образом:
Private void btnUpFiles_Click (отправитель объекта, System.EventArgs e)
{
строка PathName = this.File1.PostedFile.FileName.ToString();
Response.Write(имя пути);
}
2>Начните решать задачу:
Я думал, что это проблема с получением строки пути, поэтому сначала перехватывал путь и имя файла, затем перехватывал расширение файла и сохранял их как строки, но всегда возникала ошибка. Фрагмент кода выглядит следующим образом:
string fullname=this.File1.PostedFile.FileName.ToString();//Получить полный путь
string firstname=fullname.Substring(0,fullname.LastIndexOf(".")+1);//Получаем путь и имя файла и удаляем суффикс файла
Session["firstname"]=firstname;//Сохранить в сеансе
char [] Spliter={'.'};//Разделитель, используемый для разделения строки
string [] fileName=this.File1.PostedFile.FileName.Split(splitter);//Сохраняем каждую часть разделенного полного пути в массиве
Session["lastname"]=fileName[fileName.Length-1];// Сохранить последний элемент (суффикс имени) в массиве как сеанс
Response.Redirect("test.aspx");//Я хочу передать его на эту страницу для тестирования.
Вышеупомянутый метод по-прежнему терпит неудачу, и причина ошибки, похоже, вообще не связана со строками.
3>Пользователь сети "@@" предположил, что это проблема httpRuntime (спасибо):
Решение проблемы: добавьте следующий код в <system.web></system.web> в web.config:
<httpRuntime ExecutionTimeout="600" maxRequestLength="951200"
useFullyQualifiedRedirectUrl="true" minFreeThreads="8"
minLocalRequestFreeThreads="4" appRequestQueueLimit="100" EnableVersionHeader="true"/>
4>Объяснение из MSDN:
httpRuntime — это настройки среды выполнения asp.net http, определяющие способ обработки запросов к приложениям asp.net.
ExecutionTimeout: указывает максимальный срок, разрешенный для выполнения запроса, в секундах.
maxRequestLength: указывает максимальный размер загружаемого файла, поддерживаемый ASP.NET. Это ограничение можно использовать для предотвращения атак типа «отказ в обслуживании», вызванных передачей пользователями большого количества файлов на сервер. Указанный размер указан в КБ. Значение по умолчанию — 4096 КБ (4 МБ).
useFullyQualifiedRedirectUrl: указывает, является ли перенаправление клиента полным (в формате « http://server/path », который требуется для некоторых мобильных элементов управления) или вместо завершения клиенту отправляется относительное перенаправление. Если задано значение True, все неполные перенаправления будут автоматически преобразованы в полный формат. false — опция по умолчанию.
minFreeThreads: определяет минимальное количество свободных потоков, которым разрешено выполнять новые запросы. ASP.NET оставляет определенное количество потоков свободными для запросов, для завершения обработки которых требуются дополнительные потоки. Значение по умолчанию — 8.
minLocalRequestFreeThreads: указывает минимальное количество свободных потоков, поддерживаемых ASP.NET, которым разрешено выполнять новые локальные запросы. Это количество потоков зарезервировано для входящих запросов от локального хоста на случай, если некоторые запросы во время своей обработки сделают подзапросы к локальному хосту. Это позволяет избежать возможных взаимоблокировок, вызванных рекурсивным повторным входом на веб-сервер.
appRequestQueueLimit: указывает максимальное количество запросов, которые ASP.NET поставит в очередь для приложения. Запросы ставятся в очередь, когда для обработки запроса недостаточно свободных потоков. Когда очередь превышает предел, указанный в этом параметре, входящие запросы будут отклонены с сообщением об ошибке «503 — Сервер слишком занят».
EnableVersionHeader: указывает, должен ли ASP.NET выводить заголовок версии. Microsoft Visual Studio 2005 использует это свойство для определения используемой в данный момент версии ASP.NET. Для производственных сред это свойство не является обязательным и его можно отключить.