আমি সি # তে থাকা পৃষ্ঠার পূর্ণ url কীভাবে পাব?


163

আমি ব্যবহারকারীর নিয়ন্ত্রণ থেকে যে পৃষ্ঠাটিতে আছি তার পুরো URL টি পেতে আমার সক্ষম হওয়া দরকার। এটি কি একত্রে অনুরোধ ভেরিয়েবলগুলির একত্রে একত্রিত করার বিষয়? যদি তাই হয়? বা আরও সহজ উপায় আছে?


5
একটি loadbalanced webfarm সকলের কাছে .. হুঁশিয়ার পোর্ট নম্বর প্রদর্শিত System.Url ব্যবহারের সময়: stackoverflow.com/questions/7674850/...
felickz

উত্তর:


155

আমি সাধারণত Request.Url.ToString()সম্পূর্ণ ইউআরএল (ক্যোরিস্ট্রিং সহ) পেতে ব্যবহার করি , কোন কনটেন্টেশন প্রয়োজন নেই।


2
যদি ইউআরএলে '#' থাকে তবে # এর পরে সমস্ত অক্ষর অন্তর্ভুক্ত হবে না।
ক্রুনাল সিসোদিয়া

5
@ ক্রুনালসিসোদিয়া আমার মনে হয় না যে কোনও ইউআরএল এর হ্যাশ কখনও সার্ভারে প্রেরণ করা হয়েছে, তবে আমি ভুল হতে পারি।
ট্র্যাভিস

Request.Url.ToString()কোয়েরি স্ট্রিং অন্তর্ভুক্ত নয়।
যোগেশ প্যাটেল

320

এই ধরণের তথ্যের জন্য আমি সাধারণত একটি তালিকা এখানে উল্লেখ করি:

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

আশা করি আপনি এই দরকারী পাবেন!


1
1) অনুরোধও রয়েছে। রাউআরআল; 2) অনুরোধ। ইউআরএল 'খুব খারাপ অনুরোধ করা পাথ' এর ব্যতিক্রম হতে পারে।
ব্যবহারকারী 2864740

অত্যন্ত সহায়ক উত্তর, তবে পোর্ট সংখ্যাগুলি বিভ্রান্তি এড়াতে ধারাবাহিক হওয়া উচিত নয় (ধরে নিবেন যে সমস্ত উদাহরণ একই অনুরোধের জন্য? উদাহরণস্বরূপ, কর্তৃপক্ষ এবং পোর্ট ইম্প্লি পোর্ট 80 তবে অ্যাবসুলিউটরিতে বন্দর 2000 রয়েছে)
ইয়ং বব

Request.QueryStringq=qvalueকেবল ফেরৎ
মার্সেল

74
Request.Url.AbsoluteUri

এই সম্পত্তিটি আপনার প্রয়োজন মতো সমস্ত কিছু এক সংযুক্ত কল করে।


6
+1 টি। এটি সেরা উত্তর। অনুরোধের চেয়ে বেশি পছন্দ করা উচিত r
টড মেনিয়ার

10

এর জন্য 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


1
ধন্যবাদ। এই সাহায্য!
ফ্ল্যাভিভিভি


9

আপনার যদি HTTP থেকে ক্যোরিস্ট্রিংয়ের সবকিছু হিসাবে সম্পূর্ণ URL টির প্রয়োজন হয় তবে আপনাকে নিম্নলিখিত ভেরিয়েবলগুলি একত্রিত করতে হবে

Request.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS
Request.ServerVariables("SERVER_NAME") 
Request.ServerVariables("SCRIPT_NAME") 
Request.ServerVariables("QUERY_STRING")

2
এটি মানহীন মানক বন্দরগুলিতে বিবেচনা করে না (যেমন HTTP এর জন্য 80 পোর্ট ব্যবহার না করা)
স্পঞ্জবয়

1
আপনি পোর্ট সনাক্তকরণের জন্য অনুরোধ করতে পারেন V সার্ভারে ভেরিয়েবলস ("SERVER_PORT")!
আর্মেন

1
মনে রাখবেন যে এই উত্তরটিতে ভিবি.নেট সিনট্যাক্স ব্যবহার করা হয়েছে। সি # তে, অনুরোধটি ব্যবহার করুন example উদাহরণস্বরূপ সার্ভারে ভেরিয়েবলগুলি "" এইচটিটিপিএস "]।
জায়েসার

7

উন্নত ব্যবহার করতে Request.Url.OriginalStringচেয়ে Request.Url.ToString()(অনুযায়ী দুটিই MSDN )


আপনার যদি সত্যিকারের আসল স্ট্রিংয়ের প্রয়োজন হয় তবেই এটি আরও ভাল।
ডার্ক

উপরের এমএসডিএন-এর লিঙ্ক থেকে @ ডিরকি: উপরে লেখা স্ট্রিংয়ে স্ট্রিংয়ে নিয়ন্ত্রণের অক্ষর থাকতে পারে যা একটি কনসোল অ্যাপ্লিকেশনের অবস্থাকে দূষিত করতে পারে the । "
এনি

হুবহু, এবং এর কোনও যোগসূত্র নেই OriginalString
ডার্ক

5

ধন্যবাদ ছেলেরা, আমি আমার নির্দিষ্ট প্রয়োজনের জন্য আপনার উত্তর @ ক্রিশ্চিয়ান এবং @ জনাথন উভয়ের মিশ্রণটি ব্যবহার করেছি।

"http://" + Request.ServerVariables["SERVER_NAME"] +  Request.RawUrl.ToString()

নিরাপদ HTTP সম্পর্কে আমার মাথা ঘামানোর দরকার নেই, সার্ভারনেম ভেরিয়েবলের প্রয়োজন এবং RawUrl ডোমেন নাম থেকে পাথ পরিচালনা করে এবং উপস্থিত থাকলে ক্যোরিস্ট্রিং অন্তর্ভুক্ত করে।


2
আপনার এও জানা উচিত যে অনুরোধের বিপরীতে RawUrl, ইউআরএল, ইউআরএল ম্যাপিং ব্যবহার করা হচ্ছে তবে মূল, আনম্যাপড রিকোয়েস্ট ইউআরএল উপস্থাপন করে।
হার্পো

SERVER_NAME প্রায়শই ক্লায়েন্টের ব্যবহৃত "আসল" ইউআরএল ফিরিয়ে দেয় না। সরাসরি খনন করতে গেলে HTTP_HOST সম্ভবত আরও ভাল ফর্ম .. সাধারণ এইচটিটিপি-থেকে-অন্য-বন্দরটিও মিস করে।
ব্যবহারকারী 2864740

1

আপনার যদি বন্দর নম্বর প্রয়োজন হয় তবে আপনি ব্যবহার করতে পারেন

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;
}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.