2011-02-25 10 views
5

मैंने एक प्रोग्राम लिखा है जो होस्ट नामों और साइट के नाम की एक सूची लेता है और उन्हें साइट पर बाइंडिंग के रूप में जोड़ता है यदि वे किसी भी साइट पर पहले से मौजूद नहीं हैं । कार्यक्रम .NET 4.0 सी # में लिखा गया है।आईआईएस 7.0 बनाम 7.5 साइट माइक्रोसॉफ्ट.Web.Administration.Site बाइंडिंग कोलेक्शन

स्थानीय रूप से (आईआईएस 7.5, विन 7), नीचे दिया गया कोड ठीक काम करता है। यह बाध्यकारी और निकास का पता लगाता है। मेरे सर्वर पर (आईआईएस 7.0, विन सर्वर 2008), चेक विफल रहता है और बाध्यकारी हमेशा जोड़ा जाता है। क्या देता है?

क्या यह है कि LINQ क्वेरी गलत है या यह है कि Microsoft.Web.Administration लाइब्रेरी में आईआईएस 7.0 को संभालने में कुछ मौलिक अपर्याप्तता है?

ServerManager oIisMgr = new ServerManager(); 
Site oSite = oIisMgr.Sites[siteName]; 
string sBindInfo = ":80:" + this.StripUrl(hostName); 

//See if this binding is already on some site 
if (oIisMgr.Sites 
    .Where(ST => ST.Bindings.Where(B => B.BindingInformation == sBindInfo).Any()) 
    .Any()) return true; 

Binding oBinding = oSite.Bindings.CreateElement(); 
oBinding.Protocol = "http"; 
oBinding.BindingInformation = sBindInfo; 
oSite.Bindings.Add(oBinding); 

oIisMgr.CommitChanges(); 

उत्तर

7

रिकॉर्ड के लिए, मुझे पता चला कि मेरी बग था:

यहाँ कोड है कि दोनों मशीनों पर काम करना चाहिए का हिस्सा है। डिफ़ॉल्ट रूप से, साइट बाइंडिंग आईआईएस प्रबंधन कंसोल कि छोड़ के माध्यम से जोड़ा 'आईपी पते:' सभी सौंपे नहीं गए करने के लिए सेट इस बंधन स्ट्रिंग दिए गए हैं:

"*: 80: some.domain.com"

मैं

":: 80: some.domain.com" मेरे कोड में यह उपयोग कर रहा था // ध्यान दें लापता वाइल्डकार्ड

बाइंडिंग काम है, लेकिन प्रबंधक के माध्यम से किसी भी है कि गया था सेटअप समान के रूप में दर्ज नहीं किया गया है मेरी LINQ क्वेरी द्वारा मैं होस्टर्ड नाम बाध्यकारी जानकारी के वाइल्डकार्ड-कम संस्करण के खिलाफ पूछताछ कर रहा था।

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