2009-05-16 15 views
16

मैं एकाधिक सबडोमेन के साथ एएसपीनेट साइट विकसित करने की कोशिश कर रहा हूं। मैं सामान्य रूप से वेब साइटों और विशेष रूप से एएसपीनेट के लिए नया हूं। हालांकि, ऐसा लगता है कि वाइल्डकार्ड सबडोमेन डीएनएस प्रविष्टियों और वेब सर्वर कॉन्फ़िगरेशन के संयोजन के साथ ठीक तरह से सेटअप होते हैं - जो मेरी विकास मशीन पर नहीं होने वाला है। इसलिए मैं मैन्युअल रूप से मेरी खिड़की में प्रविष्टियों डालने कर रहा हूँ मेजबान फ़ाइल:विकास मशीन पर सबडोमेन का परीक्षण कैसे करें? abc.localhost

127.0.0.1 localhost 
127.0.0.1 abc.localhost 
127.0.0.1 xyz.localhost 

हालांकि, जब मैं Request.Url संपत्ति देखा जा करने के लिए कोई उप-डोमेन है पूछताछ का प्रयास करें। उदाहरण के लिए, यदि मैं ब्राउज़र में http://abc.localhost:1660/ हिट करता हूं तो मुझे से http://localhost:1660/ मिलता है; abc अभी चला गया है ?!

मुझे नहीं पता कि मेजबान फ़ाइल इस तरह क्यों काम करती है, लेकिन क्या कोई अन्य तरीका है जिसका उपयोग मैं अपने स्थानीय वेब एप्लिकेशन में सबडोमेन प्राप्त करने के लिए कर सकता हूं? आप सभी को धन्यवाद।

ध्यान दें कि मैं केवल एक पूर्ण आईआईएस सर्वर के बजाय अंतर्निहित एएसपीनेट विकास सर्वर का उपयोग कर रहा हूं। (मुझे इस सप्ताह के अंत में एक पूर्ण आईआईएस तक पहुंच नहीं मिल सकती है, लेकिन मैं अभी भी जानना चाहूंगा कि इससे मदद मिलेगी।)

+0

मैं इस में निर्मित वेब सर्वर का उपयोग करने का एक कारक हो सकता है लगता है। मुझे विश्वास नहीं है कि यह सामान्य आईआईएस सर्वर पर होगा। (यदि आप एक्सपी चला रहे हैं तो आपके पास यह है; आपने अपनी वेबसाइट को वर्चुअल एप्लिकेशन के रूप में स्थापित किया है)। –

उत्तर

9

आप "अनुरोध। हेडर [" HOST "]" का उपयोग करके सबडोमेन के साथ अनुरोधित डोमेन प्राप्त कर सकते हैं। यहां एक सरल विधि है जो वर्तमान अनुरोध के सबडोमेन को लौटाती है। यह विधि यह भी मानती है कि डोमेन के बाद वास्तविक वेब की तरह आपके पास ".COM", ".NET" आदि है। तो अगर आप अपने मेजबान फ़ाइल को बदलने के लिए शामिल करने के लिए चाहता हूँ "localhost.com", "abc.localhost.com", आदि

public string subdomain() 
{ 
    string host = Request.Headers["HOST"]; 
    if (!string.IsNullOrEmpty(host)) 
    { 
     var parts = host.Split('.'); 
     if (parts.Length > 2) 
     { 
      return parts[0]; 
     } 
    } 
    return string.Empty; 
} 

मैं इस बहुत बात पर खोज रहा था और यहाँ एक लेख है कि क्या वास्तव में है मुझे यह पता लगा मदद की: https://web.archive.org/web/20090813174916/http://blogs.securancy.com/post/ASPNET-MVC-Subdomain-Routing.aspx

9

हेडर के बारे में नहीं पता, लेकिन एक छोटी सी चाल जो मैंने उपयोग की है यह है कि 127 के सभी। * पते स्थानीयहोस्ट पते हैं, न केवल 127.0.0.1। आप वास्तव में 127.0.0.1 पोर्ट 80 पर एक सर्वर सुन सकते हैं, और एक और वेबसर्वर उदाहरण 127.0.0.2 पोर्ट 80 पर सुन रहा है। तो फिर आप 127.0.0.1 लोकलहोस्ट नाम देंगे, 127.0.0.2 abc.localhost (या abc.mydomain) हो सकता है .com ताकि आप अपने स्थानीय वेबसर्वर के खिलाफ वास्तविक लाइव यूआरएल का परीक्षण कर सकें), आदि

+2

ग्रेट टिप। 127 कभी नहीं जानता था। * सभी localhost था .. ठंडा – ppumkin

9

मैं विंडोज 7 का उपयोग कर रहा, IIS 7.5, वी.एस. 2008, एसक्यूएल सर्वर 2005

मैं सफलतापूर्वक सब-डोमेन अनुकरण पर स्थानीय होस्ट आदि में निम्न पंक्ति डाल खरीदने में सक्षम था/मेजबान

127.0.0.2 myapp.localhost.com 

और, IIS में मैं बाइंडिंग अनुभाग में निम्न संशोधन के साथ एक नई वेब साइट की स्थापना:

Hostname = myapp.localhost.com 
IP address = 127.0.0.2 

मैं भी एक नया आवेदन पूल बनाया है, लेकिन यह आवश्यक नहीं है। आपको उस लेख उपयोगकर्ता को बदलना पड़ सकता है जिसका उपयोग अनुरोधों पर काम करने के लिए किया जाता है। मेरे पास डिफ़ॉल्ट आईआईएस उपयोगकर्ता के साथ एसक्यूएल कनेक्टिविटी अनुमति त्रुटियां थीं।

IIS>Application Pools>>Right Click on your pool>Advanced Settings>Identity = LocalSystem 
संबंधित मुद्दे