Peut-être que ce n'est pas la meilleure façon, mais cela fonctionne.
// Here is your path
String p = photosLocation + "whatever.jpg";
// Here is the page address
String pa = Page.Request.Url.AbsoluteUri;
// Take the page name
String pn = Page.Request.Url.LocalPath;
// Here is the server address
String sa = pa.Replace(pn, "");
// Take the physical location of the page
String pl = Page.Request.PhysicalPath;
// Replace the backslash with slash in your path
pl = pl.Replace("\\", "/");
p = p.Replace("\\", "/");
// Root path
String rp = pl.Replace(pn, "");
// Take out same path
String final = p.Replace(rp, "");
// So your picture's address is
String path = sa + final;
Modifier: Ok, une personne marquée comme n'étant pas utile. Quelques explications: prenez le chemin physique de la page en cours, divisez-le en deux parties: serveur et répertoire (comme c: \ inetpub \ whatever.com \ whatever) et nom de page (comme /Whatever.aspx). Le chemin physique de l'image doit contenir le chemin du serveur, donc "soustrayez"-le, ne laissant que le chemin de l'image par rapport au serveur (comme: \ design \ picture.jpg). Remplacez les barres obliques inversées par des barres obliques et ajoutez-le à l'URL du serveur.
Je ne trouve pas le membre ResolveUrl de HttpRequest dans la documentation de l'une des versions .Net. Utilisez-vous ASP.Net MVC? – Jared
@Fredrik Comme Jared a souligné que l'objet HttpRequest n'a pas cette méthode. Il peut être trouvé dans l'objet Page ou un objet de contrôle Web. Pourriez-vous éditer votre réponse pour refléter cela? –
'ResolveUrl' n'est pas membre de' System.Web.HttpRequest' – adripanico