Tal vez esto no es la mejor manera, pero funciona.
// 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;
Editar: Ok, alguien marcado como no útil. Algunas explicaciones: tome la ruta física de la página actual, divídala en dos partes: servidor y directorio (como c: \ inetpub \ whatever.com \ whatever) y nombre de la página (como /Whatever.aspx). La ruta física de la imagen debe contener la ruta del servidor, así que "restarla", dejando solo la ruta de la imagen relativa a la del servidor (como: \ design \ picture.jpg). Reemplace las barras diagonales con barras y añádalas a la url del servidor.
No encuentro el miembro ResolveUrl de HttpRequest en la documentación de ninguna de las versiones de .Net. ¿Estás usando ASP.Net MVC? – Jared
@Fredrik Como Jared ha señalado el objeto HttpRequest no tiene este método. Se puede encontrar en el objeto Página o en un objeto de control web. ¿Podrías editar tu respuesta para reflejar esto? –
'ResolveUrl' no es miembro de' System.Web.HttpRequest' – adripanico