दिलचस्प पोस्ट
विशिष्ट डिवाइस के लिए एंड्रॉइड ऐप कैसे प्रतिबंधित करें? मैं प्रबंधित बीन के अंदर से संदेश बंडल स्ट्रिंग कैसे प्राप्त करूं? एंड्रॉइड किटकैट में अपना एसएमएस ऐप डिफ़ॉल्ट कैसे सेट करें? किसी फ़ोल्डर में सभी फ़ाइलों को दूसरे में ले जाएं? वसंत MVC में संदर्भों को समझना WCF और ASMX वेब सेवाओं के बीच क्या अंतर है? स्ट्रिंग में मिलान वाले कोष्ठक एक समय देरी के साथ एक कार्य दोहराएं? UIBezierPath से अंक की सूची कैसे प्राप्त करें? एंड्रॉइड पर ब्लूटूथ का उपयोग करते हुए सेवा खोज में विफल रहा स्विंग कीललाइस्टर और एक ही समय में एकाधिक कुंजी दबाई गई ब्राउज़र सूँघने के बिना, मैं सिर्फ आईफ़ोन (और नहीं IE) के लिए स्टाइलशीट कैसे लागू करूं? PHP भाजित सीमांकित स्ट्रिंग में कुंजी / वैल्यू जोड़े (एसोसिएटेटेड अर्रे) एसक्यूएल इंजेक्शन के हमलों से सुरक्षित बयान कैसे तैयार हो सकते हैं? जावा में "इंफरेस्ट नहीं किया जा सकता"

Global.aspx के Application_Start में पूर्ण होस्ट नाम + पोर्ट नंबर कैसे प्राप्त करें?

मैंने कोशिश की

Uri uri = HttpContext.Current.Request.Url; String host = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port; 

और यह मेरी स्थानीय मशीन पर अच्छी तरह से काम करता था, लेकिन जब IIS7 को प्रकाशित किया जाता है, तो एक अपवाद कह रही है

 System.Web.HttpException: Request is not available in this context 

किसी को भी यह कैसे हासिल करना है?

Solutions Collecting From Web of "Global.aspx के Application_Start में पूर्ण होस्ट नाम + पोर्ट नंबर कैसे प्राप्त करें?"

जब आपका वेब एप्लिकेशन शुरू होता है, तो कोई HTTP अनुरोध संभाला नहीं है।

आप Application_BeginRequest (ऑब्जेक्ट प्रेषक, EventArgs ई) विधि को परिभाषित करने के लिए संभाल कर सकते हैं जिसमें अनुरोध का संदर्भ उपलब्ध है।

संपादित करें: माइक वोल्ोडर्सकी के ब्लॉग से प्रेरित एक कोड नमूना है जो माइकल शिमिंन्स से जुड़ा हुआ है:

  void Application_BeginRequest(Object source, EventArgs e) { HttpApplication app = (HttpApplication)source; var host = FirstRequestInitialisation.Initialise(app.Context); } static class FirstRequestInitialisation { private static string host = null; private static Object s_lock = new Object(); // Initialise only on the first request public static string Initialise(HttpContext context) { if (string.IsNullOrEmpty(host)) { lock (s_lock) { if (string.IsNullOrEmpty(host)) { var uri = context.Request.Url; host = uri.GetLeftPart(UriPartial.Authority); } } } return host; } } 

स्वीकार्य जवाब अच्छा है, लेकिन ज्यादातर मामलों में (अगर पहला अनुरोध एक HTTP अनुरोध है) आपको बेहतर सत्र का उपयोग करना चाहिए, जो कि हर 20 मिनट या उससे अधिक उपयोगकर्ता के लिए एक बार कहा जाता है (यकीन नहीं कि सत्र कितना समय मान्य है)। प्रत्येक अनुरोध पर Application_BeginRequest निकाल दिया जाएगा

 public void Session_Start(Object source, EventArgs e) { //Request / Request.Url is available here :) } 

बस इस का जवाब दे ताकि अगर कोई वास्तव में इस विषय पर खोज करे …

यह किसी भी मोड में आवेदन शुरू करने पर काम करता है …

 typeof(HttpContext).GetField("_request", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(HttpContext.Current)