1>Un ami a posé une question aujourd'hui :
Pourquoi n'y a-t-il aucune erreur lors de l'utilisation du contrôle Fichier pour lire les chemins d'images, de documents et d'autres fichiers, mais lors de la lecture de fichiers vidéo (tels que rmvb, etc.), une erreur apparaît indiquant que la page ne peut pas être affichée.
L'extrait de code est le suivant :
private void btnUpFiles_Click (expéditeur de l'objet, System.EventArgs e)
{
string pathName=this.File1.PostedFile.FileName.ToString();
Réponse.Write(pathName);
}
2>Commencez à résoudre le problème :
Je pensais que c'était un problème pour obtenir la chaîne du chemin, j'ai donc d'abord intercepté le chemin et le nom du fichier, puis intercepté l'extension du fichier et les ai enregistrés sous forme de chaînes, mais il y avait toujours une erreur. L'extrait de code est le suivant :
string fullname=this.File1.PostedFile.FileName.ToString();//Obtenir le chemin complet
string firstname=fullname.Substring(0,fullname.LastIndexOf(".")+1);//Obtenir le chemin et le nom du fichier, et supprimer le suffixe du fichier
Session["firstname"]=firstname;//Enregistrer dans une session
char [] spliter={'.'};//Le délimiteur utilisé pour diviser la chaîne
string [] fileName=this.File1.PostedFile.FileName.Split(spliter);//Enregistrer chaque partie du chemin complet divisé dans le tableau
Session["lastname"]=fileName[fileName.Length-1];// Enregistrer le dernier élément (suffixe de nom) du tableau en tant que session
Response.Redirect("test.aspx");//Je souhaite le transmettre à cette page pour le tester.
La méthode ci-dessus échoue toujours et la cause de l’erreur semble n’avoir rien à voir avec les chaînes.
3>L'internaute "@@" a suggéré qu'il s'agissait d'un problème httpRuntime (merci) :
Solution au problème : ajoutez le code suivant à <system.web></system.web> dans web.config :
<httpRuntime exécutionTimeout="600" maxRequestLength="951200"
useFullyQualifiedRedirectUrl="true" minFreeThreads="8"
minLocalRequestFreeThreads="4" appRequestQueueLimit="100" activateVersionHeader="true"/>
4>Explication de MSDN :
httpRuntime est la configuration des paramètres d'exécution http asp.net pour déterminer comment gérer les requêtes adressées aux applications asp.net.
ExecutionTimeout : Indique le délai maximum autorisé pour exécuter la requête, en secondes
maxRequestLength : indique la taille maximale de téléchargement de fichier prise en charge par ASP.NET. Cette limite peut être utilisée pour empêcher les attaques par déni de service provoquées par les utilisateurs transmettant un grand nombre de fichiers au serveur. La taille spécifiée est en Ko. La valeur par défaut est 4 096 Ko (4 Mo).
useFullyQualifiedRedirectUrl : Indique si la redirection client est complète (au format " http://server/path ", requis pour certains contrôles mobiles), ou si une redirection relative est envoyée au client à la place. Si True, toutes les redirections qui ne sont pas entièrement qualifiées seront automatiquement converties au format pleinement qualifié. false est l'option par défaut.
minFreeThreads : Spécifie le nombre minimum de threads libres autorisés à exécuter de nouvelles requêtes. ASP.NET conserve un nombre spécifié de threads libres pour les requêtes qui nécessitent des threads supplémentaires pour terminer leur traitement. La valeur par défaut est 8.
minLocalRequestFreeThreads : indique le nombre minimum de threads libres maintenus par ASP.NET qui sont autorisés à exécuter de nouvelles requêtes locales. Ce nombre de threads est réservé aux requêtes entrantes de l'hôte local au cas où certaines requêtes adresseraient des sous-requêtes à l'hôte local lors de leur traitement. Cela évite d'éventuels blocages provoqués par une nouvelle saisie récursive sur le serveur Web.
appRequestQueueLimit : indique le nombre maximum de requêtes qu'ASP.NET mettra en file d'attente pour l'application. Les requêtes sont mises en file d'attente lorsqu'il n'y a pas suffisamment de threads libres pour traiter la requête. Lorsque la file d'attente dépasse la limite spécifiée dans ce paramètre, les demandes entrantes seront rejetées avec un message d'erreur « 503 - Serveur trop occupé ».
EnableVersionHeader : indique si ASP.NET doit générer un en-tête de version. Microsoft Visual Studio 2005 utilise cette propriété pour déterminer la version d'ASP.NET actuellement utilisée. Pour les environnements de production, cette propriété n'est pas obligatoire et peut être désactivée.