2011-01-11 16 views
9

मैं आईआईएस 7 के साथ होस्ट किए गए सी #/एएसपी.नेट में एक सास ऐप लिख रहा हूं। मैं साइन अप करने वाले प्रत्येक ग्राहक के लिए एक वैयक्तिकृत सबडोमेन बनाना चाहता हूं, यानी fred.mydomain.com, bob.mydomain.com, जिनमें से प्रत्येक एक ही ऐप को इंगित करेगा, केवल प्रति ग्राहक एक अलग त्वचा के साथ।प्रोग्रामिंग के लिए आईआईएस 7 के लिए सबडोमेन कैसे बनाएं?

मैं इन सबडोमेन को प्रोग्रामेटिक रूप से कैसे बना सकता हूं?

उत्तर

6

IIS7 फिर स्क्रिप्ट संभाल जो कुछ भी आप की जरूरत थीम में mydomain.com/myapp?id=user को user.mydomain.com की तरह सभी अनुरोधों को मैप करने के लिए (जिसमें उपयोगकर्ता www, मेल या अन्य मौजूदा वास्तविक उप डोमेन नहीं है) के लिए उपयोग URL Rewrite

आपको बनाए गए प्रत्येक उपयोगकर्ता के लिए नियम जोड़ने की आवश्यकता नहीं है। ऐसा करने के लिए बस एक सामान्य नियम बनाएं।

और, आपके सर्वर DNS में, आपको mydomain.com आईपी पर * .mydomain.com (जहां * www, मेल या अन्य मौजूदा वास्तविक सबडोमेन नहीं है) को अग्रेषित करने की आवश्यकता है। यह बहुत सीधे आगे है। आपके पास मौजूदा सबडोमेन के लिए पहले से ही DNS रिकॉर्ड्स हैं। बस * .mydomain.com जोड़ें और mydomain.com पर इंगित करें। यह चाल का DNS हिस्सा करेगा। अन्य हिस्सा निश्चित रूप से महसूस करते हुए कि कोई पहले से ही कह रहा द्वारा अपने प्रश्न का उत्तर रीडायरेक्ट करने के लिए URL Rewrite

+0

सरवर, मेरे पास एक फॉलो-अप प्रश्न है, जो मुझे आशा है कि आप इसकी सहायता कर सकेंगे: http://stackoverflow.com/q/5394632/7850 –

6

में है, ऐसा लगता है आसान तरीका सिर्फ होस्ट सर्वर चर हड़पने के लिए हो सकता है।

  1. सेटअप IIS ताकि सभी आने वाले अनुरोधों (मेजबान हैडर की परवाह किए बिना) यह एक आवेदन करने के लिए इशारा करते हैं। सभी साइटों या तो आईआईएस में एक अद्वितीय होस्ट नाम या अद्वितीय बंदरगाह के लिए है, तो आपके द्वारा इस सेट होगा: की 80

  2. में कुछ भी प्रदान नहीं डिफ़ॉल्ट पोर्ट के लिए साइट बाइंडिंग

    1. होस्ट नाम फ़ील्ड। जब आप पहली बार आईआईएस स्थापित करते हैं तो डिफ़ॉल्ट वेबसाइट डिफ़ॉल्ट रूप से सेट की जाती है।

  3. अपने सर्वर की स्थैतिक IP पता बाहर चित्रा, और प्रत्येक नए ग्राहक है कि कि आईपी के लिए अपने डोमेन के लिए DNS बात करने के लिए साइन अप करता है बताओ। या, यदि आप डोमेन नाम के स्वामी होंगे, तो एक कैचल DNS प्रविष्टि सेट करें: * .mydomain.com - आपके सर्वर के आईपी पते पर इंगित करता है।

  4. अपने आवेदन के भीतर, होस्ट हेडर को विभिन्न त्वचा या मास्टर पेज प्रदान करने के लिए जांचें।

इस कोड के भीतर से मेजबान हैडर हड़पने चाहिए:

Request.ServerVariables["HTTP_HOST"] 

वहां से आप आप यह निर्धारित करने के लिए है डेटाबेस मानों का एक सेट के खिलाफ अपने मूल्य का परीक्षण कर सकते हैं जो masterpage/सीएसएस स्टाइलशीट/आदि आप उस यूआरएल के आधार पर लोड करने की जरूरत है। ध्यान रखें कि यदि आप इस तरह के एक कैचल करते हैं तो आपको एक यूआरएल के लिए जिम्मेदार होना होगा कि आपने उससे मेल खाने के लिए त्वचा नहीं रखी है।

संबंधित मुद्दे