2010-01-17 4 views
1

Existe-t-il un moyen correct d'obtenir l'adresse Web appropriée pour un fichier sous une application ASP.Net? Par exemple, j'ai du contenu dans '/ Content/Images/Gallery/2010-01-17/small /', et je voudrais parcourir tous ces fichiers, et afficher un lien vers le navigateur.Obtention d'une adresse Web pour un fichier local dans ASP.Net

Maintenant, je peux le faire manuellement en élaborant le chemin à partir des fichiers FullName ou je peux le faire en connaissant le répertoire courant, mais existe-t-il un moyen ASP.Net approprié pour le faire?

Comme vous pouvez le constater, je préfère utiliser la méthode fournie si elle existe :)

Cordialement

Moo

+0

Vous cherchez l'inverse de Server.MapPath? Je ne pense pas que tu puisses. Un URI est mappé à un seul fichier, mais un fichier sur le disque peut être mappé à plusieurs URI. – Kobi

Répondre

2

Vous pouvez utiliser la méthode ResolveUrl() pour cela. Si votre répertoire de contenu est situé directement sous le répertoire racine de l'application web vous, alors cela devrait fonctionner:

// "~" results in an URL to your web app's root directory 
string imageBaseUrl = this.ResolveUrl("~/content/gallery/2010-01-17/small"); 

Ensuite, vous pouvez ajouter les noms des images à cette URL de base.

0

Je pense que ResolveUrl n'est qu'une partie de la réponse.

Malheureusement, il n'existe pas de fonction intégrée pour renvoyer une URL complète à une ressource particulière, y compris le nom d'hôte et le protocole. Une partie de la raison en est que vous pouvez accéder à une URL de plusieurs façons ... et le serveur est complètement indépendant du nom d'hôte. Vous devez consulter les propriétés Request.Url pour créer une nouvelle URL à partir de la requête de l'utilisateur ou utiliser ServerVariables.

Voir cette question: How to Convert "~/default.aspx" to "http://www.website.com/default.aspx" C#?

Questions connexes