Tôi cần có thể truy cập URL đầy đủ của trang tôi đang kiểm soát. Có phải chỉ là vấn đề ghép một loạt các biến Yêu cầu lại với nhau? Nếu vậy cái nào? Hoặc có một cách simpiler hơn?
Tôi cần có thể truy cập URL đầy đủ của trang tôi đang kiểm soát. Có phải chỉ là vấn đề ghép một loạt các biến Yêu cầu lại với nhau? Nếu vậy cái nào? Hoặc có một cách simpiler hơn?
Câu trả lời:
Tôi thường sử dụng Request.Url.ToString()
để có được url đầy đủ (bao gồm cả chuỗi truy vấn), không yêu cầu nối.
Request.Url.ToString()
không bao gồm queryString.
Dưới đây là danh sách tôi thường đề cập đến 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 bạn sẽ tìm thấy điều này hữu ích!
Request.QueryString
q=qvalue
chỉ trở về
Request.Url.AbsoluteUri
Khách sạn này làm mọi thứ bạn cần, tất cả chỉ trong một cuộc gọi ngắn gọn.
Đối với ASP.NET Core
bạn sẽ cần đá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 vào chế độ xem của bạn:
@using Microsoft.AspNetCore.Http.Extensions
sau đó
@Context.Request.GetDisplayUrl()
Có _ViewImports.cshtml
thể là một nơi tốt hơn cho điều đó@using
Yêu cầu.RawUrl
nếu bạn cần URL đầy đủ vì mọi thứ từ http đến chuỗi truy vấn, bạn sẽ cần 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")
Sử dụng Request.Url.OriginalString
tốt hơn Request.Url.ToString()
(theo MSDN )
OriginalString
.
Cảm ơn các bạn, tôi đã sử dụng kết hợp cả hai câu trả lời của bạn @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 phải lo lắng về http an toàn, cần biến tên máy chủ và RawUrl xử lý đường dẫn từ tên miền và bao gồm chuỗi truy vấn nếu có.
Hãy thử như sau -
var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();