Có lẽ đây không phải là cách tốt nhất, nhưng nó hoạt động.
// 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;
Chỉnh sửa: Ok, ai đó được đánh dấu là không hữu ích. Một số giải thích: lấy đường dẫn vật lý của trang hiện tại, chia thành hai phần: máy chủ và thư mục (như c: \ inetpub \ whatever.com \ whatever) và tên trang (như /Whatever.aspx). Đường dẫn vật lý của hình ảnh nên chứa đường dẫn của máy chủ, vì vậy "trừ" chúng, chỉ để lại đường dẫn của hình ảnh tương ứng với đường dẫn của máy chủ (như: \ design \ picture.jpg). Thay thế các dấu gạch chéo ngược bằng dấu gạch chéo và nối nó vào url của máy chủ.
Tôi không thể tìm thấy thành viên ResolveUrl của HttpRequest trong tài liệu cho bất kỳ phiên bản .Net nào. Bạn đang sử dụng ASP.Net MVC? – Jared
@Fredrik Như Jared đã chỉ ra đối tượng HttpRequest không có phương thức này. Nó có thể được tìm thấy trong đối tượng Page hoặc đối tượng điều khiển web. Bạn có thể chỉnh sửa câu trả lời của mình để phản ánh điều này không? –
'ResolveUrl' không phải là thành viên của' System.Web.HttpRequest' – adripanico