2011-11-09 16 views
6

हम एक बहु-टैनेंट वेब एप्लिकेशन बना रहे हैं जहां हम किरायेदारों को उपडोमेन (ग्राहक 1.ourapp.com, customer2.ourapp.com, आदि) के माध्यम से पहचानते हैं।एएसपी.नेट एमवीसी। डेटा संचालित सबडोमेन?

सबडोमेन का सेटअप डेटा संचालित होना चाहिए - यानी हम हर बार जब कोई नया ग्राहक प्राप्त करते हैं तो हम आईआईएस कॉन्फ़िगरेशन (मैन्युअल रूप से या प्रोग्रामेटिक रूप से) को संशोधित नहीं करना चाहते हैं। में

MVC में जहां जांच करने के लिए है कि एक अनुरोध में एक उप डोमेन मान्य है (यानी उप डोमेन डेटाबेस में कुछ तालिका में मौजूद है)

कुछ विकल्प Ive माना सबसे अच्छी जगह है,

  1. OnActionExecuting नियंत्रक
  2. एक कस्टम क्रिया फिल्टर में
  3. आईआईएस मॉड्यूल
  4. मार्ग सेटअप के भाग के रूप - एक कस्टम मार्ग वर्ग जो मान्य रों बारे में जानता है ub-domains - इस दृष्टिकोण के समान - http://blog.maartenballiauw.be/post/2009/05/20/ASPNET-MVC-Domain-Routing.aspx

मुझे लगता है कि अवधारणात्मक रूप से यह एक रूटिंग कार्य है इसलिए अंतिम विकल्प सही लगता है ?? यानि एक उपडोमेन के साथ अनुरोध जो अस्तित्व में नहीं है, वह अनिवार्य रूप से एक अवैध यूआरएल है, इसलिए इसे किसी मार्ग के खिलाफ मेल नहीं करना चाहिए और इसके बजाय 404 तक गिरना चाहिए। इससे हमें उन मार्गों को स्पष्ट रूप से परिभाषित करने की अनुमति मिल जाएगी जो वैध सबडोमेन

+0

मैं .. लगता है कि आप आसानी से MVC रूटिंग के साथ ऐसा कर सकते हैं आप से जानकारी आवश्यक हो जाएगा [यहां] (http://hanssens.org/post/ASPNET-MVC-Subdomain-Routing.aspx) –

उत्तर

1
की आवश्यकता नहीं है

मैं एक कस्टम एक्शन फ़िल्टर बनाउंगा और ग्लोबल.एक्सएक्स में इसे वैश्विक रूप से पंजीकृत करूंगा (नए नियंत्रकों को जोड़ने पर कोई चिंता नहीं)।

आप एक कस्टम MvcHandler बनाने पर भी विचार कर सकते हैं और मार्गों की घोषणा करते समय इसे निर्दिष्ट कर सकते हैं। यह आपको कुछ मार्गों (यानी स्थिर सामग्री के लिए) निर्दिष्ट करने की अनुमति देगा, जिसे सभी ग्राहकों के बीच साझा किया जा सकता है।

अन्य समाधान केवल रूटिंग का उपयोग करना और एकल डोमेन पर चिपकाना है, इसलिए आपको वाइल्डकार्ड डोमेन के लिए महंगे SSL प्रमाणपत्र के लिए खोलना नहीं है।

1

मैं इसे पहले अपने बेस कंट्रोलर क्लास में ऐसा कर रहा था, हालांकि, जैसे @ जकूब ने कहा, सबडोमेन का उपयोग करना महंगा होगा यदि आप या आपके ग्राहक को इसके बाद एसएसएल प्रमाणपत्र की आवश्यकता है।

  var dotIndex = HostingEnvironment.SiteName.IndexOf('.'); 
      if (dotIndex > 0) 
      { 
       var subdomain = HostingEnvironment.SiteName.Substring(0, dotIndex); 
       customerCode = subdomain; 
      } 
संबंधित मुद्दे