2012-03-29 22 views
8

में होस्ट नहीं किया जा रहा है, मैं वर्तमान में एक ही एएसपी.NET एप्लिकेशन को इंगित करने वाले एकाधिक उप डोमेन वाले साइट का परीक्षण कर रहा हूं, और रूटिंग प्रत्येक अनुरोध के साथ क्या करना है।मेजबान होस्ट होस्टनाम सी # एएसपी.नेट एमवीसी

परीक्षण के लिए, मैंने अपनी "मेजबान फ़ाइल" में कई उप डोमेन जोड़े हैं, उदाहरण के लिए "127.0.0.1 admin.TestDomain.com", जो ठीक काम कर रहा है।

हालांकि, समस्या यह है कि जब मैं मेजबान नाम/डोमेन/url (HttpContext.Current.Request.Url ...) प्राप्त करने के लिए C# में कोई फ़ंक्शन कॉल करता हूं, होस्ट यूआरएल हमेशा "लोकलहोस्ट" के साथ आता है, "टेस्टडोमेन" के बजाए।

कोई विचार क्यों इस नाम को इस तरीके से हल किया जा रहा है, और जहां मैं "TestDomain.com" पकड़ सकता हूं?

+0

आप "होस्ट नाम/डोमेन/यूआरएल प्राप्त करने" की कोशिश कैसे कर रहे हैं? –

+0

कई तरीकों का प्रयास किया, लेकिन उनमें सभी HttpContext.Current.Request.Url क्लास शामिल हैं, और मुझे डीबग ब्रेक पर उस कक्षा का निरीक्षण करते समय कहीं भी "टेस्टडोमेन" नहीं मिल रहा है। –

+0

क्या आप अधिक विशिष्ट हो सकते हैं; हमें एक नियंत्रक कार्रवाई और * बिल्कुल * कोड दिखाएं, और * बिल्कुल * यह क्या आउटपुट करता है? साथ ही, जब आप जिन परिणामों का उल्लेख करते हैं, तब आप क्या चल रहे हैं? और क्या ब्राउज़र (ओं)? मैं पूछता हूं क्योंकि मैंने यह व्यवहार स्वयं नहीं देखा है, इसलिए मैं इसे डुप्लिकेट करने का प्रयास करना चाहता हूं। –

उत्तर

11

मुझे लगता है कि स्थानीय होस्टिंग सिस्टम द्वारा आईपी-एड्रेस (लोकलहोस्ट) में डोमेन की मैपिंग के बाद मूल होस्ट खो जाता है, जिसमें आपकी "होस्ट" फ़ाइल होती है। आप RawUrl बजाय सटीक URL ब्राउज़र में टाइप प्राप्त करने का प्रयास कर सकते हैं:

HttpContext.Current.Request.RawUrl 

इसके अलावा, आप यह मूल मेजबान को शामिल करना चाहिए (पता या डिफ़ॉल्ट मेजबान नहीं, Host: उपयोगकर्ता अनुरोध हेडर से HTTP_HOST चर लाने के लिए कोशिश कर सकते हैं सर्वर) ब्राउज़र का अनुरोध करने की कोशिश करता है:

string requestedDomain = HttpContext.Current.Request.ServerVariables["HTTP_HOST"]; 

शायद Getting parameters from RawUrl लेख उपयोगी होगा।

+0

मैंने इसे स्वयं माना था, लेकिन सवाल से मुझे लगता है कि वह यूआरएल रूटिंग का उपयोग कर रहा है जिसका उपयोग डिफ़ॉल्ट रूप से एएसपी.नेट एमवीसी में किया जाता है। रूटिंग वास्तव में पुनर्लेखन (डिफ़ॉल्ट रूप से उपयोग के रूप में) नहीं करता है, और मुझे नहीं लगता कि मैंने खुद को समान व्यवहार देखा है; मैं हमेशा 'होस्ट' के रूप में पता बार में क्या देखता हूं। मुझे लगता है! लेकिन यह निश्चित रूप से कुछ बारीकी से देखने के लिए कुछ है ... –

+0

रूटिंग और रिवाइटिंग के बीच अंतर का एक उदाहरण: रिवाइटिंग का उपयोग करते समय, आईआईएस लॉग वास्तव में * पुनः लिखा * यूआरएल दिखाते हैं, जो बताता है कि इस उत्तर में दी गई जानकारी सही क्यों है पुनर्लेखन। राउटिंग, हालांकि, अनुरोध किए गए आईआईएस लॉग में दिखाए गए वही यूआरएल में परिणाम मिलता है। –

+0

मुझे यकीन है कि समस्या एमवीसी रूटिंग से पहले दिखाई दी। हाँ, आप सही हैं, फिर से लिखने के संबंध में - स्थानीय ऑपरेटिंग सिस्टम द्वारा निष्पादित आईपी = लोकलहोस्ट में डोमेन का वास्तव में * मैपिंग * है (सही है, नोट्स के लिए धन्यवाद)। ब्राउज़र अनुरोध मेजबान TestDomain.com 127.0.0.1 का उपयोग किया, तो सर्वर किसी भी तरह का मानना ​​है कि यह एक स्थानीयहोस्ट है। वैसे भी 'होस्ट:' HTTP अनुरोध का शीर्षलेख मूल TestDomain.com –