Dim x AS New URI("http://www.example.com/test//test.asp")
Dim rel AS New URI("http://www.example.com/xxx/xxx.asp")
Console.Writeline(x.MakeRelativeUri(rel).Tostring())
Tại đây đầu ra là:Bình thường hoá URI để làm cho nó hoạt động chính xác với MakeRelativeUri
../../xxx/xxx.asp
nào có vẻ đúng hầu hết các máy chủ web sẽ xử lý hai trong những cách sau như cùng một yêu cầu:
http://www.example.com/test//test.asp
http://www.example.com/test/test.asp
Cách tốt nhất để khắc phục hành vi này là có API nào để thực hiện việc này hay tạo thủ công một URI mới và xóa tất cả // trong đường dẫn?
Mã đó rất thô lỗ vì nó sẽ không hoạt động trong một số trường hợp, rõ ràng nhất là http://example.com/test///xxx thứ hai mặc dù nó không được mã hóa rất tốt. URI hợp lệ: http://example.com/?bla=//Whatup –
Dr.Evil: Url hợp lệ phụ thuộc phần lớn vào máy chủ web để diễn giải nó và mức độ mạnh mẽ của nó khi quyết định phân tích url. Vì khung làm việc không làm tất cả việc dọn dẹp như bạn muốn, sau đó tạo một hàm "makerelativeurl" để kiểm tra và làm sạch các dấu gạch chéo một cách thích hợp. Bạn có nên theo dõi RFC hoặc xử lý các trường hợp url rõ ràng không đúng? .) –