12
votes

Comment obtenir un trajet physique du répertoire virtuel

Comme nous savons qu'un direcoty virtuel peut être lié à un dossier avec un nom différent, comment puis-je obtenir le chemin physique d'un répertoire virtuel?

J'ai essayé avec httpcontext.current.server.mappath, mais cela me renvoie le chemin physique plus le chemin que j'ai envoyé en paramètre même si le répertoire n'existe même pas ou s'il existe un nom différent.

Exemple:

C: \ blabla \ sites \ Application1 \ IMAAGES - sur disque

Application1 \ images (dans ISS, mon répertoire virtuel)

mais si je fais un mappath sur "/ images", il ne me donnera jamais C: \ blabla \ sites \ Application1 \ Imaenesses mais C: \ inetpub \ wwwroot \ images qui ne sont pas le répertoire réel lié à.


3 commentaires

Toute la réponse ci-dessous ne résout pas le problème. Je suppose que Mappath n'est pas assez intelligent pour vérifier s'il s'agit d'un répertoire IIS virtuel ou non. Il ajoute simplement le chemin de racine d'application sur le chemin que vous fournissez. Malheureusement, je n'ai pas pu trouver une solution pour cela même après une recherche intensive sur le Web.


Trouvé un moyen, voir la réponse ci-dessous.


J'ai eu un problème similaire dans deux circonstances différentes. Je devais appeler serveur.mappath ("/ application1 / images / image.jpg") au lieu de serveur.mappath ("/ images / image.jpg") dans un Situation, et l'autre, il vient d'être avéré que j'ai mal référencé mon nom de répertoire virtuel dans mon application. J'ai eu le même résultat que l'OP connuait jusqu'à ce que je fasse chacune de ces choses. Je pensais juste que j'ajouterais ...


6 Réponses :


3
votes

Et si vous essayez ce petit extrait? XXX


0 commentaires

0
votes

Cela pourrait répondre à votre question:

http://msdn.microsoft.com/ EN-US / Bibliothèque / System.Web.httprequest.PhysicalPath.aspx

Cependant, je ne peux pas actuellement fournir un exemple, car j'ai beaucoup de travail à faire. Quand je vais trouver du temps, j'enverrai des informations détaillées.


2 commentaires

Merci mais je viens de trouver mon erreur après avoir testé longtemps. Le répertoire virtuel que je recherche est dans une application afin que je dois faire httpcontext.current.server.mappath ("/ application / images") et pas seulement "/ images"


Attendait 6 ans pour les informations détaillées ...: D



8
votes

C'est ce qui a fonctionné pour moi: xxx


0 commentaires

14
votes
Server.MapPath("~/Images")
is the correct way to go about it as "~" references the root of your application.

0 commentaires

1
votes

Après plus d'autres recherches, j'ai pu créer une méthode pour obtenir le chemin physique d'un répertoire IIS virtuel: xxx

cavalier: cette solution suppose que vous n'avez qu'une application racine (applications [0]).


0 commentaires

1
votes

Ce qui suit devrait fonctionner simplement bien:

var physicalPath = HostingEnvironment.MapPath("~/MyVirtualDirectory");


1 commentaires

Pouvez-vous expliquer la différence entre votre solution et les autres?