আমি কীভাবে এএসপি.নেটে রুট ডোমেন ইউআরআই পেতে পারি?


98

ধরা যাক আমি http://www.foobar.com এ একটি ওয়েবসাইট হোস্ট করছি ।

আমার কোডের পিছনে (যেমন আমার ওয়েব কনফিগারেশনে হার্ডকোড না রেখে) প্রোগ্রামযুক্তভাবে " http://www.foobar.com/ " নির্ধারণ করার কোনও উপায় আছে কি ?


7
যেহেতু এটি অনুরোধের উপর নির্ভরশীল, আপনি Requestঅবজেক্টটি দেখার চেষ্টা করতে পারেন ।
জন স্যান্ডার্স

উত্তর:


81

HttpContext.Current.Request.Ull ইউআরএল-এ সমস্ত তথ্য পেতে পারে। এবং ইউআরএলটিকে তার টুকরো টুকরো টুকরো করে ফেলতে পারে।


4
হ্যাঁ, ডাউন ভোট কেন? উত্তর এবং ডাউনভোট হিসাবে প্রায়শই চিহ্নিত কিছু দেখবেন না। : /
জ্যাক

4
আমিও এই উত্তরটি পছন্দ করি না। ব্লেশ সঠিকটি দিয়েছে এবং এটি উত্তর হিসাবে চিহ্নিত করা উচিত ...
মাইকেল বি।

-1 - অনুরোধ.আরল প্রায়শই "/ ফোল্ডার 1 / ফোল্ডার 2" এর মতো একটি url দেয় এবং ডোমেনটি পুরোপুরি বাদ দেয়।
জাস্টিন

4
@ জাস্টিন: রিকোয়েস্ট.আরল আপনাকে একটি উরি অবজেক্ট দেয় যা আপনার জন্য সমস্ত টুকরো টুকরো টুকরো করে ফেলেছে। এটি আপনাকে স্ট্রিং দিচ্ছে না। কমপক্ষে। নেট আমি ব্যবহার করছি এর সংস্করণে নেই
জোশবার্ক

6
এই কোডটি কোড যুক্ত করে এটি আরও উন্নত হতে পারে যা নীচের উত্তরটির মতো কাজ করে যা আরও বেশি ভোট পেয়েছে ...
জের্মাম

172
string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);

উরি :: গেটলিফ্ট পার্ট পদ্ধতি :

GetLeftPart পদ্ধতিটি ইউআরআই স্ট্রিংয়ের বামতম অংশযুক্ত একটি স্ট্রিং প্রদান করে, যা অংশ দ্বারা নির্দিষ্ট অংশের সাথে শেষ হবে।

ইউরিপ্যাটিয়াল গণনা :

ইউআরআই এর স্কিম এবং কর্তৃত্ব বিভাগসমূহ।


5
ইউরলকে পার্সিংয়ের পরে আরও অনেক ভাল!
ইভজিনিট

4
এটি সেরা উত্তর! tnx!
আমিনএম

এটি নির্বাচিত উত্তর হওয়া উচিত। অনেকগুলি স্ট্রিং ম্যানিপুলেশন যা অপরিবর্তিত is
ঘাসন

4
এই পদ্ধতিটি ব্যবহার করে, http: // www.lala.xxx/blah/blah ফিরে আসবে http: // www.lala.xxx
live-love

+1 এবং এটির মতো নয় uthorআপনিটি যা - লোকালহোস্টে করা পরীক্ষাগুলিতে - প্রোটোকল (http: //) অংশটি ছেড়ে দেয়।
GGleGrand

122

এখনও যে কেউ ভাবছেন, তার জন্য একটি আরও সম্পূর্ণ উত্তর পাওয়া যাবে http://devio.wordpress.com/2009/10/19/get-absolut-url-of-asp-net-application/ এ

public string FullyQualifiedApplicationPath
{
    get
    {
        //Return variable declaration
        var appPath = string.Empty;

        //Getting the current context of HTTP request
        var context = HttpContext.Current;

        //Checking the current context content
        if (context != null)
        {
            //Formatting the fully qualified website url/name
            appPath = string.Format("{0}://{1}{2}{3}",
                                    context.Request.Url.Scheme,
                                    context.Request.Url.Host,
                                    context.Request.Url.Port == 80
                                        ? string.Empty
                                        : ":" + context.Request.Url.Port,
                                    context.Request.ApplicationPath);
        }

        if (!appPath.EndsWith("/"))
            appPath += "/";

        return appPath;
    }
}

4
নিখুঁতভাবে কাজ করেছেন। যদি সাইটটি সার্ভার হয়: 8080 / মাইসাইটনেম , এটি এটি সঠিকভাবে পায়।
মাইকেল লা ভোই

4
অন্য কোথাও একটি লিঙ্কের পরিবর্তে প্রকৃত কোড ভাগ করার জন্য ধন্যবাদ।
জের্ম্ম


7
মনোযোগ! Https এর জন্য কাজ করে না। context.Request.Url.Port == 80(context.Request.Url.Port == 80 && context.Request.Url.Scheme == "http") || (context.Request.Url.Port == 443 && context.Request.Url.Scheme == "https")
Https এর জন্য

4
লোকালহোস্টের জন্যও কাজ করে (যদি আপনি লোকালির পরীক্ষা করে থাকেন)। আপনার যদি পোর্টের প্রয়োজন না হয় তবে আপনি "http: //" + HttpContext.Current.Request.Url.Host ব্যবহার করতে পারেন;
সাইবারহাক

36

উদাহরণস্বরূপ url হ'ল http://www.foobar.com/Page1

HttpContext.Current.Request.Url; //returns "http://www.foobar.com/Page1"


HttpContext.Current.Request.Url.Host; //returns "www.foobar.com"


HttpContext.Current.Request.Url.Scheme; //returns "http/https"


HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority); //returns "http://www.foobar.com"

4
নাহ না। .Hostএর "http://www.foobar.com/Page1"হয় www.foobar.com, না foobar.com
tchelidze

4
হ্যাঁ আপনি ঠিক বলেছেন, উত্তর আপডেট করেছেন। @ চেলিডজে ধন্যবাদ
ধীররাজ পালগিরি


16

সম্পূর্ণ অনুরোধ ইউআরএল স্ট্রিং পেতে:

HttpContext.Current.Request.Url

অনুরোধটির www.foo.com অংশ পেতে:

HttpContext.Current.Request.Url.Host

মনে রাখবেন যে আপনি আপনার ডিএসপি.এনইটি অ্যাপ্লিকেশনটির বাইরের উপাদানগুলির করুণায় কিছুটা অবধি রয়েছেন। যদি আইআইএস আপনার অ্যাপ্লিকেশনের জন্য একাধিক বা কোনও হোস্ট শিরোনাম গ্রহণ করার জন্য কনফিগার করা থাকে, তবে ডিএনএসের মাধ্যমে আপনার অ্যাপ্লিকেশনটিতে সমাধান করা সেই ডোমেনগুলির মধ্যে যে কোনও একটি ইউজার প্রবেশ করেছে তার উপর নির্ভর করে অনুরোধ ইউরাল হিসাবে প্রদর্শিত হতে পারে।


4
এখানে সর্বাধিক সমাধান
সম্পূর্ণ_পোগ_ফুল

4
Match match = Regex.Match(host, "([^.]+\\.[^.]{1,3}(\\.[^.]{1,3})?)$");
string domain = match.Groups[1].Success ? match.Groups[1].Value : null;

স্বাগত ডট
কম => হোস্ট হোস্ট.কম ফেরত হোস্ট.কম

host.co.uk =>
হোস্ট.
co.co.uk ফিরুন www.host.co.uk => ফিরুন হোস্টকোট.উক এস 1.www.host.co.uk => ফিরুন


আমি বুঝতে পারি এটি একটি পুরানো পোস্ট, তবে খুব ভালভাবে এনকুইনল্ট হয়েছে, আমি খুব ভাল করে রেগেক্স এক্সপ্রেশনগুলিতে দুর্দান্ত নই। ঠিক আমার যা প্রয়োজন ছিল।
জেফ্রিজে

www.abc.com এর মতো হোস্টের নামটি কীভাবে পরিচালনা করা যায় তার কোনও উত্তর কী? ধন্যবাদ!
গ্যারি ইয়ান পার্ক

4

- আইআইএস এক্সপ্রেস চালানোর সময় পোর্ট যুক্ত করা সহায়তা করতে পারে

Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port


3

আমি জানি এটি আরও পুরানো তবে এখন এটি করার সঠিক উপায়

string Domain = HttpContext.Current.Request.Url.Authority

এটি সার্ভারের জন্য পোর্ট সহ ডিএনএস বা আইপি ঠিকানা পাবে।



1

সি # উদাহরণ নীচে:

string scheme = "http://";
string rootUrl = default(string);
if (Request.ServerVariables["HTTPS"].ToString().ToLower() == "on")
{
  scheme = "https://";
}
rootUrl = scheme + Request.ServerVariables["SERVER_NAME"].ToString();

1
string host = Request.Url.Host;
Regex domainReg = new Regex("([^.]+\\.[^.]+)$");
HttpCookie cookie = new HttpCookie(cookieName, "true");
if (domainReg.IsMatch(host))
{
  cookieDomain = domainReg.Match(host).Groups[1].Value;                                
}

1

আপনি যা জিজ্ঞাসা করছেন এটি এটি বিশেষত ফিরে আসবে।

Dim mySiteUrl = Request.Url.Host.ToString()

আমি জানি এটি একটি পুরানো প্রশ্ন। তবে আমার একই সরল উত্তরের প্রয়োজন ছিল এবং এটি ঠিক কীভাবে জিজ্ঞাসা করা হয় তা ফেরত দেয় (http: // ব্যতীত)।

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