كيف يمكنني الحصول على عنوان url الكامل للصفحة التي أتواجد فيها في C#
-
09-06-2019 - |
سؤال
أحتاج إلى أن أكون قادرًا على الحصول على عنوان URL الكامل للصفحة التي أتواجد فيها من خلال عنصر تحكم المستخدم.هل الأمر مجرد مسألة تسلسل مجموعة من متغيرات الطلب معًا؟إذا كان الأمر كذلك، وتلك التي؟أم أن هناك طريقة أكثر بساطة؟
المحلول
أنا عادة استخدام Request.Url.ToString()
للحصول على عنوان URL الكامل (بما في ذلك سلسلة الاستعلام)، لا يلزم إجراء تسلسل.
نصائح أخرى
فيما يلي قائمة أشير إليها عادةً لهذا النوع من المعلومات:
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
نأمل أن تجد هذا مفيدا!
Request.Url.AbsoluteUri
هذه الخاصية تفعل كل ما تحتاجه، كل ذلك في مكالمة واحدة موجزة.
طلب.RawUrl
إذا كنت بحاجة إلى عنوان URL الكامل مثل كل شيء بدءًا من http وحتى سلسلة الاستعلام، فستحتاج إلى ربط المتغيرات التالية
Request.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS
Request.ServerVariables("SERVER_NAME")
Request.ServerVariables("SCRIPT_NAME")
Request.ServerVariables("QUERY_STRING")
ل ASP.NET Core
ستحتاج إلى توضيح ذلك:
@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")
أو يمكنك إضافة عبارة استخدام إلى طريقة العرض الخاصة بك:
@using Microsoft.AspNetCore.Http.Extensions
ثم
@Context.Request.GetDisplayUrl()
ال _ViewImports.cshtml
قد يكون مكانًا أفضل لذلك @using
أفضل للاستخدام Request.Url.OriginalString
من Request.Url.ToString()
(وفق MSDN)
شكرًا يا رفاق، لقد استخدمت مزيجًا من إجاباتكم @Christian و@Jonathan لاحتياجاتي المحددة.
"http://" + Request.ServerVariables["SERVER_NAME"] + Request.RawUrl.ToString()
لا داعي للقلق بشأن http الآمن، فأنا بحاجة إلى متغير اسم الخادم ويتعامل RawUrl مع المسار من اسم المجال ويتضمن سلسلة الاستعلام إذا كانت موجودة.
إذا كنت بحاجة إلى رقم المنفذ أيضًا، فيمكنك استخدامه
Request.Url.Authority
مثال:
string url = Request.Url.Authority + HttpContext.Current.Request.RawUrl.ToString();
if (Request.ServerVariables["HTTPS"] == "on")
{
url = "https://" + url;
}
else
{
url = "http://" + url;
}
حاول القيام بما يلي -
var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();