2008-09-24 33 views
29

Tôi có một URL cơ sở:URL tuyệt đối từ cơ sở + URL có liên quan trong C#

http://my.server.com/folder/directory/sample 

Và một người họ hàng một:

../../other/path 

Làm thế nào để có được địa chỉ URL tuyệt đối từ này? Đó là khá straighforward sử dụng thao tác chuỗi, nhưng tôi muốn làm điều này một cách an toàn, sử dụng các lớp học Uri hoặc một cái gì đó tương tự.

Ứng dụng C# tiêu chuẩn, không phải là ứng dụng ASP.NET.

Trả lời

47
var baseUri = new Uri("http://my.server.com/folder/directory/sample"); 
var absoluteUri = new Uri(baseUri,"../../other/path"); 

HOẶC

Uri uri; 
if (Uri.TryCreate("http://base/","../relative", out uri)) doSomething(uri); 
+0

Tôi có thể hỏi, là có bất kỳ tương đương JavaScript của mã trên? – Nordin

+3

Ok, tôi đã tìm thấy nó, js-uri tại http://code.google.com/p/js-uri/ Cảm ơn. – Nordin

+1

Một lưu ý điểm, rằng đối với một số lý do không rõ 'mới Uri' ** giải mã ** thực thể html, và nếu điều này làm cho một sự khác biệt, điều này sẽ dẫn đến URL không chính xác. Ví dụ tôi có một trang, cho phép nói trang 'hello% 2Fworld.html'. Sau khi làm cho nó tuyệt đối tôi nhận được 'hello/world.html' đó là tất nhiên không chính xác. – greenoldman

0

Một số có thể tìm kiếm giải pháp javascript mà sẽ cho phép chuyển đổi các url 'on the fly' khi gỡ lỗi

var absoluteUrl = function(href) { 
    var link = document.createElement("a"); 
    link.href = href; 
    return link.href; 
} 

sử dụng như:

absoluteUrl("http://google.com")

http://google.com/

hoặc

absoluteUrl("../../absolute")

http://stackoverflow.com/absolute

Các vấn đề liên quan