Может быть, это не самый лучший способ, но он работает.
// 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;
Редактировать: Хорошо, кто-то помечен как бесполезный. Некоторое объяснение: взять физический путь к текущей странице, разделить его на две части: сервер и каталог (например, c: \ inetpub \ what.com.com) и имя страницы (например, /Whwhat.aspx) Физический путь к изображению должен содержать путь к серверу, поэтому «вычтите» их, оставив только путь к изображению относительно сервера (например: \ design \ picture.jpg). Замените обратную косую черту косой чертой и добавьте ее к URL-адресу сервера.