2009-07-03 12 views
28

क्या किसी के पास यह निर्धारित करने के लिए बुलेटप्रूफ विधि (सी # आदर्श में!) है कि आपके कंप्यूटर पर ASP.Net ठीक से पंजीकृत है या नहीं?यह निर्धारित करना कि क्या ASP.Net ठीक से पंजीकृत है

मैं एएसपी.NET एप्लिकेशन के लिए एक इंस्टॉलेशन प्रोग्राम लिख रहा हूं और मुझे यह जानने की जरूरत है कि मुझे aspnet_regiis चलाना चाहिए या नहीं।

इस समय हम हमेशा aspnet_regiis चलाते हैं - मैं यह सुनिश्चित करने के लिए कि एएसपी.NET ठीक से पंजीकृत है लेकिन यह अवांछित है क्योंकि यह सभी एप्लिकेशन पूलों को पुनरारंभ करने का संकेत देता है।

वेब पर कई उपयोगी पृष्ठ नहीं है (उदाहरण के लिए http://www.codeproject.com/KB/cs/iisdetection.aspx), लेकिन उस पोस्ट शो में टिप्पणी के रूप में, यह अक्सर मामला रजिस्ट्री की रिपोर्ट है कि कि ASP.Net पंजीकृत किया गया है लेकिन अभी भी aspnet_regiis कॉन्फ़िगर करने के लिए चलाने के लिए की जरूरत है आईआईएस। उपयोगकर्ता 'जोनबी' ने ऐसा कुछ पोस्ट किया जो ऐसा लगता है कि इसे आईआईएस 6 (और आईआईएस 6 संगतता सक्षम के साथ आईआईएस 7) के लिए काम करना चाहिए, लेकिन मुझे अभी भी आईआईएस 6 संगतता मोड अक्षम के साथ आईआईएस 7 के लिए अलग पहचान कोड लिखना होगा।

तो क्या किसी ने पहले से ही इस अखरोट को तोड़ दिया है? यदि ऐसा है तो कृपया हमें बताएं क्योंकि यह समय बचाने वाला होगा। अन्यथा मैं IIS6 के लिए कोशिश करेंगे और बंदरगाह सी # में सी ++ समाधान और IIS7 के लिए मैं दिखेगा

<add path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" /> 

अंतिम सवाल के लिए applicationHosts.config की <isapiCgiRestriction> अनुभाग की जांच ...

किसी को भी करता है, तो बातें ही कर रहे हैं पता है विंडोज 7 में अलग/अलग?

उत्तर

10

सबसे पहले मैं aspnet_regiis -lv चलाने का प्रयास करूंगा।

1.1.4322.0  Valid   C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll 
2.0.50727.0  Valid   c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll 

कि आप आसानी से सत्यापित करने के लिए अपने लक्ष्य संस्करण स्थापित और मान्य है पार्स कर सकते हैं: यह आप की तरह एक आउटपुट देना चाहिए। यदि ऐसा नहीं है, तो आपको aspnet_regiis -i मार्ग पर जाना होगा।

इसके अलावा, यह देखते हुए कि आप यह चेक सी # में कर सकते हैं, आप अपने एएसपी.NET एप्लिकेशन में एक टेस्ट पेज जोड़ सकते हैं। सामान्य रूप से सफल स्थापना पर विचार करने के बाद, उस परीक्षण पृष्ठ पर HttpWebRequest करें। पृष्ठ स्वयं एक खाली पृष्ठ के रूप में सरल हो सकता है और इंस्टॉलेशन (फ़ाइल/फ़ोल्डर अनुमतियां, डीबी कॉन्फ़िगरेशन इत्यादि) की एक स्व-जांच चलाने के रूप में जटिल हो सकता है और यदि सब कुछ ठीक है तो केवल एक HTTP 200 लौटाएगा। कोई भी टाइमआउट या त्रुटि खराब इंस्टॉल इंगित करती है। फिर, वैकल्पिक रूप से, परीक्षण पृष्ठ हटाएं।

0

यह स्निपेट IIS7 +

के लिए
using Microsoft.Web.Administration; 

private static string[] ARR_STR_SUPPORTED_APP_POOLS = 
         { "ASP.NET v4.0", "ASP.NET v4.5", ".NET v4.5", ".NET v4.0" }; 

public static ApplicationPool GetFirstSupportedAppPoolInstalled(this ServerManager mgr, IEnumerable<string> supportedAppPools) 
{ 
    ApplicationPool result = null; 
    foreach (string appPoolName in supportedAppPools) 
    { 
     result = mgr.ApplicationPools[appPoolName]; 
     if (result != null) 
      break; 
    } 
    return result; 
} 

... 
using (var mgr = new ServerManager()) 
{ 
    if (!mgr.IISAccessCheck()) 
     throw new ApplicationException("Error trying to access IIS 7!"); 

    ApplicationPool appPool = mgr.GetFirstSupportedAppPoolInstalled(ARR_STR_SUPPORTED_APP_POOLS); 
    if (appPool == null) 
     throw new ApplicationException("No appropriate .NET application pool found!"); 

    // you can do something with the app pool, if needed 
} 
... 

आप इसे समायोजित कर सकते हैं के रूप में आप चाहते हैं काम करता है।

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