2009-10-19 7 views
2

Si j'ai un chemin relatif que je dois obtenir du serveur actuel. Ce qui suit ne fonctionne pas car il ne s'agit pas d'un URI valide.Comment demander une ressource (chemin relatif) à partir du serveur actuel?

var request = WebRequest.Create("\path_to_resource") 

Je crois que la meilleure façon serait de mettre le chemin dans le web.config, mais cela est facilement brisé en oubliant de mettre à jour la configuration lorsque l'application est déplacé vers un autre serveur. Y a-t-il un meilleur moyen que?

var request = WebRequest.Create(ConfigurationManager.AppSettings["root"] + "\path_to_resource"); 

Répondre

3

Eh bien, vous pouvez toujours utiliser quelque chose comme:

private string CurrentDomain() 
{ 
    string currDomain = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host; 
    if (Request.Url.Port != 80 && Request.Url.Port != 443) 
     currDomain += (":" + Request.Url.Port); 
    return currDomain; 
} 

L'utilisation de ces différentes propriétés de l'objet Request vous donnera votre nom de domaine actuel sur lequel vous pouvez ajouter vos sous-dossiers pour votre ressource.

Request.Url.Scheme est la partie http/https de l'URL, System.Uri.SchemeDelimiter est la partie :// et le Request.Url.Host sera votre nom d'hôte réel (ie. example.com).
Si votre site fonctionne sur un port non standard, les appels à Request.Url.Port l'ajouteront également dans l'URL "nom de domaine".
Notez que ce n'est pas le code de l'épreuve des balles, car il suppose que votre (par exemple) SSL en cours d'exécution (https) sur le port par défaut de 443

Si vous avez besoin des chemins de fichiers physiques réels, vous pouvez utiliser Server.MapPath pour récupérer la chemin physique du fichier de la "racine" de votre application ASP.NET, et ajoutez vos sous-dossiers à partir de là.

Voir aussi: ASP.NET Web Site Paths

+0

si la demande est à la racine du domaine? – Dave

+0

Si ce n'est pas à la racine, vous pouvez utiliser: Request.ApplicationPath. Donc "CurrentDomain() + Request.ApplicationPath +" /MonPage.aspx " – spryce

Questions connexes