1>Un amigo hizo una pregunta hoy:
¿Por qué no hay ningún error al usar el control Archivo para leer las rutas de imágenes, documentos y otros archivos, pero al leer archivos de video (como rmvb, etc.), hay un error que indica que la página no se puede mostrar?
El fragmento de código es el siguiente:
vacío privado btnUpFiles_Click (remitente del objeto, System.EventArgs e)
{
cadena nombreruta=this.File1.PostedFile.FileName.ToString();
Respuesta.Escribir(nombreruta);
}
2>Comienza a resolver el problema:
Pensé que era un problema para obtener la cadena de ruta, así que primero intercepté la ruta y el nombre del archivo, luego intercepté la extensión del archivo y los guardé como cadenas, pero siempre había un error. El fragmento de código es el siguiente:
string fullname=this.File1.PostedFile.FileName.ToString();//Obtener la ruta completa
string firstname=fullname.Substring(0,fullname.LastIndexOf(".")+1);//Obtenga la ruta y el nombre del archivo y elimine el sufijo del archivo
Sesión["firstname"]=firstname;//Guardar en una sesión
char [] spliter={'.'};//El delimitador utilizado para dividir la cadena
string [] fileName=this.File1.PostedFile.FileName.Split(spliter);//Guarde cada parte de la ruta completa dividida en la matriz
Session["lastname"]=fileName[fileName.Length-1];// Guardar el último elemento (sufijo de nombre) en la matriz como una sesión
Response.Redirect("test.aspx");//Quiero pasarlo a esta página para probarlo.
El método anterior aún falla y la causa del error parece no tener nada que ver con las cadenas.
3>El internauta "@@" sugirió que se trataba de un problema de httpRuntime (gracias):
Solución al problema: agregue el siguiente código a <system.web></system.web> en web.config:
<httpEjecución en tiempo de ejecuciónTimeout="600" maxRequestLength="951200"
useFullyQualifiedRedirectUrl="true" minFreeThreads="8"
minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true"/>
4>Explicación de MSDN:
httpRuntime es la configuración del tiempo de ejecución http de asp.net para determinar cómo manejar las solicitudes a las aplicaciones asp.net.
ExecutionTimeout: Indica el límite de tiempo máximo permitido para ejecutar la solicitud, en segundos.
maxRequestLength: indica el tamaño máximo de carga de archivos admitido por ASP.NET. Este límite se puede utilizar para evitar ataques de denegación de servicio causados por usuarios que pasan una gran cantidad de archivos al servidor. El tamaño especificado está en KB. El valor predeterminado es 4096 KB (4 MB).
useFullyQualifiedRedirectUrl: indica si la redirección del cliente está completamente calificada (en el formato " http://server/path ", que es necesario para algunos controles móviles), o si se envía una redirección relativa al cliente en su lugar. Si es Verdadero, todos los redireccionamientos que no estén completamente calificados se convertirán automáticamente al formato completo. falso es la opción predeterminada.
minFreeThreads: especifica el número mínimo de subprocesos libres permitidos para ejecutar nuevas solicitudes. ASP.NET mantiene una cantidad específica de subprocesos libres para solicitudes que requieren subprocesos adicionales para completar su procesamiento. El valor predeterminado es 8.
minLocalRequestFreeThreads: indica el número mínimo de subprocesos libres mantenidos por ASP.NET que pueden ejecutar nuevas solicitudes locales. Esta cantidad de subprocesos está reservada para solicitudes entrantes del host local en caso de que algunas solicitudes realicen subsolicitudes al host local durante su procesamiento. Esto evita posibles interbloqueos causados por el reingreso recursivo al servidor web.
appRequestQueueLimit: indica el número máximo de solicitudes que ASP.NET pondrá en cola para la aplicación. Las solicitudes se ponen en cola cuando no hay suficientes subprocesos libres para manejar la solicitud. Cuando la cola excede el límite especificado en esta configuración, las solicitudes entrantes se rechazarán con el mensaje de error "503 - Servidor demasiado ocupado".
enableVersionHeader: indica si ASP.NET debe generar un encabezado de versión. Microsoft Visual Studio 2005 utiliza esta propiedad para determinar la versión de ASP.NET actualmente en uso. Para entornos de producción, esta propiedad no es obligatoria y se puede desactivar.