Làm cách nào để có được url ứng dụng tương đối từ Request.Url.AbsolutePath
?Nhận url tương đối của ứng dụng từ Request.Url.AbsolutePath
VirtualPathUtility
dường như chỉ hoạt động với các url ~/XXX
?
Làm cách nào để có được url ứng dụng tương đối từ Request.Url.AbsolutePath
?Nhận url tương đối của ứng dụng từ Request.Url.AbsolutePath
VirtualPathUtility
dường như chỉ hoạt động với các url ~/XXX
?
Tôi giải quyết nó như thế này:
// create an absolute path for the application root
var appUrl = VirtualPathUtility.ToAbsolute("~/");
// remove the app path (exclude the last slash)
var relativeUrl = HttpContext.Current.Request.Url.AbsolutePath.Remove(0, appUrl.Length - 1);
String appUrl = VirtualPathUtility.ToAbsolute("~/");
String RelativePath = new System.Uri(Page.Request.Url, "").PathAndQuery.Substring(appUrl.Length-1)
của nó một chút muộn để trả lời nhưng có một giải pháp thanh lịch này. Bạn có thể sử dụng
Request.Url.PathAndQuery
Điều này sẽ trả lại đường dẫn tương đối của trang.
Ví dụ, nếu URL là www.example.com/products?A=a&B=b&C=c
, các mảnh trên của mã sẽ trở lại /products?A=a&B=b&C=c
Tôi nghĩ rằng đây là cách sạch nhất:
new Uri(Request.Url.PathAndQuery, UriKind.Relative))
này đã làm việc cho tôi:
VirtualPathUtility.MakeRelative("~", Request.Url.AbsolutePath)
Ví dụ: nếu gốc của trang web là /Website
và Request.Url.AbsolutePath
là /Website/some/path
, điều này sẽ trả về some/path
.
Để thực hiện điều này mà không cần sử dụng chuỗi thao tác và xử lý các đường dẫn tương đối của ứng dụng tôi đã sử dụng:
var relativeUrl = VirtualPathUtility.ToAppRelative(
new Uri(context.Request.Url.PathAndQuery, UriKind.Relative).ToString());
Tại sao URI mới (context.Request.Url.PathAndQuery, UriKind.Relative) .ToString() '? Không chỉ 'context.Request.Url.PathAndQuery' giống nhau? – MiMo
Để xây dựng dựa trên câu trả lời thoải mái Ashwin Singh - tôi cần liên kết neo để được bao gồm với URL có liên quan của tôi, vì vậy tôi chỉ cần thêm lại vào cuối:
Request.Url.PathAndQuery + Request.Url.Fragment
Vì vậy, http://localhost:8080/abc/d?foo=bar#jazz
trở thành /abc/d?foo=bar#jazz
.
Xin chào, hãy xem tại đây: http://stackoverflow.com/questions/3681052/get-absolute-url-from-relative-path-refactored-method –
@felipeoriani: Đó là đường dẫn tương đối tuyệt đối (đối diện với những gì Tôi muốn). – jgauffin
Là 'Request.ApplicationPath' bạn muốn gì không? – V4Vendetta