كيف يمكنني الحصول على عنوان url الكامل للصفحة التي أتواجد فيها في C#

StackOverflow https://stackoverflow.com/questions/40680

  •  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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top