OVH Cloud OVH Cloud

Bogue et ApplicationPath

1 réponse
Avatar
Steeve
Bonjour,

Lorsque je lance la compilation, j'obtiens le message suivant. J'essais
juste de faire la liste des fichiers et dossiers d'un répertoire donné pour
qu'elle apparaissent dans une ListBox (nommé ici : "ListeRep").

private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
{
string RepInitial = Request.ApplicationPath + "/piccom/fichiers/";
Session["RepCourant"] = RepInitial;
}
AfficheRep((string)Session["RepCourant"]);
}
private void AfficheRep(string Rep)
{
string RepInitial = Request.ApplicationPath + "/piccom/fichiers/";
DirectoryInfo Repertoire = new DirectoryInfo(Rep);
if ((string)Session["RepCourant"] != RepInitial)
{
ListeRep.Items.Add("<Remonter d'un niveau>");
}
foreach(DirectoryInfo Element in Repertoire.GetDirectories())
ListeRep.Items.Add("<"+Element.Name+">");
foreach(FileInfo ElementFichier in Repertoire.GetFiles())
ListeRep.Items.Add(ElementFichier.Name);
}

Impossible de trouver une partie du chemin d'accès
"/cc2617v2/piccom/fichiers/".
Description : Une exception non gérée s'est produite au moment de
l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour
plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.IO.DirectoryNotFoundException: Impossible de
trouver une partie du chemin d'accès "/cc2617v2/piccom/fichiers/".

Erreur source:

Ligne 41 : ListeRep.Items.Add("<Remonter d'un niveau>");
Ligne 42 : }
Ligne 43 : foreach(DirectoryInfo Element in Repertoire.GetDirectories())
Ligne 44 : ListeRep.Items.Add("<"+Element.Name+">");
Ligne 45 : foreach(FileInfo ElementFichier in Repertoire.GetFiles())

1 réponse

Avatar
YJLAMOTTE
Bonjour,
je crois qu'il faut faire un petit point ...

Request.ApplicationPath va te donner un chemin Virtuel..
Les méthodes de System.IO fonctionnent avec un chemin physique..

Ton image (voir poste précédent) peut fonctionner avec un chemin physique
si tu ne passe pas par un serveur (ex les fichiers HTML d'aide) ou virtuel

La solution habituelle est de mettre dans ton web.config une variable "ROOT"
qui va te donner le chemin physique de ton répertoire de base.. apres tu
concatenes avec ce que tu veux..

Lis bien le MSDN sur Request.ApplicationPath et Server.MapPath et apres tu
n'auras plus de pb. Eventuellement passe en Debug et pose des points d'arret
pour bien voir ce que ces méthodes te renvoie.

Aller, courage

YJLAMOTTE


"Steeve" wrote:

Bonjour,

Lorsque je lance la compilation, j'obtiens le message suivant. J'essais
juste de faire la liste des fichiers et dossiers d'un répertoire donné pour
qu'elle apparaissent dans une ListBox (nommé ici : "ListeRep").

private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
{
string RepInitial = Request.ApplicationPath + "/piccom/fichiers/";
Session["RepCourant"] = RepInitial;
}
AfficheRep((string)Session["RepCourant"]);
}
private void AfficheRep(string Rep)
{
string RepInitial = Request.ApplicationPath + "/piccom/fichiers/";
DirectoryInfo Repertoire = new DirectoryInfo(Rep);
if ((string)Session["RepCourant"] != RepInitial)
{
ListeRep.Items.Add("<Remonter d'un niveau>");
}
foreach(DirectoryInfo Element in Repertoire.GetDirectories())
ListeRep.Items.Add("<"+Element.Name+">");
foreach(FileInfo ElementFichier in Repertoire.GetFiles())
ListeRep.Items.Add(ElementFichier.Name);
}

Impossible de trouver une partie du chemin d'accès
"/cc2617v2/piccom/fichiers/".
Description : Une exception non gérée s'est produite au moment de
l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour
plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.IO.DirectoryNotFoundException: Impossible de
trouver une partie du chemin d'accès "/cc2617v2/piccom/fichiers/".

Erreur source:

Ligne 41 : ListeRep.Items.Add("<Remonter d'un niveau>");
Ligne 42 : }
Ligne 43 : foreach(DirectoryInfo Element in Repertoire.GetDirectories())
Ligne 44 : ListeRep.Items.Add("<"+Element.Name+">");
Ligne 45 : foreach(FileInfo ElementFichier in Repertoire.GetFiles())