Tôi cần có thể truy cập URL đầy đủ của trang tôi đang truy cập từ điều khiển người dùng. Nó chỉ là vấn đề ghép nối một loạt các biến Yêu cầu với nhau? Nếu vậy thì cái nào? Hoặc là có một cách simpiler hơn?Làm cách nào để nhận được url đầy đủ của trang tôi đang ở trong C#
Trả lời
Tôi thường sử dụng Request.Url.ToString()
để nhận được url đầy đủ (bao gồm cả chuỗi truy vấn), không cần ghép nối.
Nếu URL chứa '#' thì tất cả ký tự sau # sẽ không được bao gồm. –
@KrunalSisodiya Tôi không nghĩ rằng băm của URL được gửi đến máy chủ, nhưng tôi có thể sai. – travis
'Request.Url.ToString()' không bao gồm queryString. –
Request.RawUrl
điều này không trả lại url đầy đủ. Nếu url đầy đủ là http://www.blah.com/1.1/home/main?a=1 Yêu cầu.RawUrl sẽ trả về 1.1/hom/main? A = 1 – jnoreiga
nếu bạn cần URL đầy đủ như tất cả mọi thứ từ http đến chuỗi truy vấn, bạn sẽ cần phải nối các biến sau
Request.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS
Request.ServerVariables("SERVER_NAME")
Request.ServerVariables("SCRIPT_NAME")
Request.ServerVariables("QUERY_STRING")
Điều này không tính đến các cổng không chuẩn (tức là không sử dụng cổng 80 cho http) – Spongeboy
bạn có thể sử dụng Request.ServerVariables ("SERVER_PORT") để phát hiện cổng! – armen
Lưu ý rằng câu trả lời này sử dụng cú pháp VB.Net. Trong C#, hãy sử dụng Request.ServerVariables ["HTTPS"] chẳng hạn. – jaycer
Thanks guys, tôi đã sử dụng một sự kết hợp của cả hai bạn câu trả lời @Christian và @Jonathan cho nhu cầu cụ thể của tôi.
"http://" + Request.ServerVariables["SERVER_NAME"] + Request.RawUrl.ToString()
Tôi không cần lo lắng về bảo mật http, cần biến servername và RawUrl xử lý đường dẫn từ tên miền và bao gồm chuỗi truy vấn nếu có.
Bạn cũng nên biết rằng RawUrl, không giống như Yêu cầu.Url, đại diện cho url yêu cầu ban đầu, chưa được ánh xạ nếu ánh xạ url đang được sử dụng. – harpo
SERVER_NAME thường không trả về URL "thực" do khách hàng sử dụng. HTTP_HOST có lẽ là hình thức tốt hơn nếu đi đào sâu trực tiếp .. cũng bỏ qua HTTP-to-another-port đơn giản. – user2864740
Request.Url.AbsoluteUri
Thuộc tính này làm mọi thứ bạn cần, tất cả trong một cuộc gọi nhậy cảm.
+1. Đây là câu trả lời hay nhất. Nên được ưa thích hơn Request.Url.ToString(). –
* succint * ...... – Unbreakable
Nếu bạn cần số cổng cũng có, bạn có thể sử dụng
Request.Url.Authority
Ví dụ:
string url = Request.Url.Authority + HttpContext.Current.Request.RawUrl.ToString();
if (Request.ServerVariables["HTTPS"] == "on")
{
url = "https://" + url;
}
else
{
url = "http://" + url;
}
Dưới đây là danh sách tôi thường tham khảo cho loại thông tin này:
Request.ApplicationPath : /virtual_dir
Request.CurrentExecutionFilePath : /virtual_dir/webapp/page.aspx
Request.FilePath : /virtual_dir/webapp/page.aspx
Request.Path : /virtual_dir/webapp/page.aspx
Request.PhysicalApplicationPath : d:\Inetpub\wwwroot\virtual_dir\
Request.QueryString : /virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.AbsolutePath : /virtual_dir/webapp/page.aspx
Request.Url.AbsoluteUri : http://localhost:2000/virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.Host : localhost
Request.Url.Authority : localhost:80
Request.Url.LocalPath : /virtual_dir/webapp/page.aspx
Request.Url.PathAndQuery : /virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.Port : 80
Request.Url.Query : ?q=qvalue
Request.Url.Scheme : http
Request.Url.Segments :/
virtual_dir/
webapp/
page.aspx
Hy vọng rằng bạn sẽ thấy điều này hữu ích!
1) Ngoài ra còn có Request.RawUrl; 2) Request.Url có thể ném một ngoại lệ trên 'đường dẫn yêu cầu rất xấu'. – user2864740
Câu trả lời rất hữu ích, nhưng không nên số cổng nhất quán để tránh nhầm lẫn (giả sử tất cả các ví dụ là cho cùng một yêu cầu? Ví dụ, Authority và Port ngụ ý cổng 80 nhưng AbsoluteUri chứa cổng 2000) –
'Request.QueryString' trả về' q = qvalue' chỉ – Marcel
Tốt hơn để sử dụng Request.Url.OriginalString
hơn Request.Url.ToString()
(theo MSDN)
Nó chỉ tốt hơn nếu bạn thực sự yêu cầu chuỗi gốc. – Dirk
@DirkTừ liên kết đến MSDN ở trên: "Chuỗi được trả về bởi phương thức ToString có thể chứa các ký tự điều khiển, có thể làm hỏng trạng thái của ứng dụng bảng điều khiển. Bạn có thể sử dụng phương thức GetComponents với định dạng UriFormat.SafeUnescaped để loại bỏ các ký tự điều khiển khỏi chuỗi." – Eni
Chính xác và không liên quan gì đến 'OriginalString'. – Dirk
Đối ASP.NET Core
bạn sẽ cần phải đánh vần nó ra:
@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")
Hoặc bạn có thể thêm một tuyên bố sử dụng để xem của bạn:
@using Microsoft.AspNetCore.Http.Extensions
sau đó
@Context.Request.GetDisplayUrl()
Các _ViewImports.cshtml
có thể là một nơi tốt đẹp hơn cho rằng @using
- 1. SharePoint nhận URL đầy đủ của trang hiện tại ở mã phía sau
- 2. Nhận URL trang chủ đầy đủ tại Kohana 3
- 3. mô phỏng cuộn vô hạn trong C# để nhận được html đầy đủ của một trang
- 4. Nhận URL đầy đủ của hành động trong ASP.NET MVC
- 5. Cách lấy URL đầy đủ của trang Drupal?
- 6. Làm cách nào tôi có thể nhận được chuỗi đầy đủ getTraceAsString() của PHP?
- 7. Nhận tên miền từ URL đầy đủ
- 8. Bắt URL đầy đủ của trang hiện tại (PHP)
- 9. Làm cách nào để nhận URL đầy đủ vào hình ảnh trong CakePHP?
- 10. Làm cách nào để chuyển URL tương đối thành URL đầy đủ?
- 11. Trong linux, làm thế nào để có được đường dẫn đầy đủ của một lệnh tôi đang sử dụng?
- 12. Làm thế nào để có được đầy đủ url hình ảnh sản phẩm trong Magento
- 13. Tôi làm cách nào để có được tên lớp được phân loại đầy đủ trong Hoàn thành mã của PHPStorm?
- 14. Làm cách nào để tải html của trang được tải đầy đủ (bằng javascript) làm đầu vào trong java?
- 15. Làm thế nào tôi có thể nhận được backtrace đầy đủ trong SpiderMonkey (JSAPI) từ chức năng reportError của tôi?
- 16. django url đầy đủ trong get_absolute_url
- 17. Làm cách nào để nhận ngoại lệ cho mô-đun mà tôi chưa nhập đầy đủ?
- 18. Url helper cho url đầy đủ trong asp.net MVC-3
- 19. giải mã tinyurl trong R để nhận đường dẫn url đầy đủ?
- 20. Làm cách nào để có được tên miền đầy đủ của máy tính trong Python?
- 21. Sử dụng URL đầy đủ với Restangular
- 22. Nhận đường dẫn đầy đủ của các tệp trong PowerShell
- 23. Làm cách nào để đặt liên kết/url vào trang chủ của trang web ở Django?
- 24. Làm cách nào để bắt buộc các chú thích ở cuối trang khi trang không đầy?
- 25. Nhận danh sách quy trình đang chạy đầy đủ (Visual C++)
- 26. Selenium tải xuống trang đầy đủ html
- 27. Cách tìm tên ĐẦY ĐỦ của phương thức gọi C#
- 28. iOS FBRequestConnection startForMyFriendsWithCompletionHandler nhận được danh sách đầy đủ của bạn bè
- 29. Truy vấn tên đầy đủ ở Django
- 30. Làm cách nào để lấy thư mục từ đường dẫn đầy đủ của tệp?
Để bất cứ ai trong một webfarm loadbalanced .. hãy cẩn thận số cổng xuất hiện khi sử dụng System.Url: http://stackoverflow.com/questions/7674850/get -original-url-without-non-standard-port-c – felickz