2012-12-11 34 views
11

विंडोज 7 32 बिट के साथ विफलता IIS 7.5.760016385Server.CreateObject(), 32 बिट Windows और आईआईएस 7

मैं विज़ुअल बेसिक 6.0 में DLL- बनाया है और क्लासिक ASP कोड के भीतर से इसका इस्तेमाल करने की कोशिश कर रहा:

006 ASP 0178
Server.CreateObject Access Error
The call to Server.CreateObject failed while checking permissions. Access is denied to this object.
err.number = -2147024891

मैं iusr_cmpname उपयोगकर्ता बनाने और इस एएसपी पेज के डिफ़ॉल्ट वेबसाइट और वर्चुअल निर्देशिका में इसे करने के लिए अधिकार देने की कोशिश की है:

set obj = Server.CreateObject("a.b") 

मैं निम्नलिखित त्रुटि मिलती है। मेरे पास आरईजीएसवीआर 32 डीएल है।

मैं "विंडोज़ सुविधाओं को चालू और बंद करें" पर गया हूं और आईआईएस/वर्ल्ड वाइड वेब सर्विसेज/एप्लिकेशन डेवलपमेंट फीचर्स का चयन किया है, फिर एएसपी, एएसपीनेट, आईएसएपीआई एक्सटेंशन और आईएसएपीआई फाइलर्स की जांच की है।

मैंने विभिन्न समाचार समूहों में कई लीडों का पालन किया है लेकिन मैं इस समस्या को दूर कर सकता हूं। हमने पिछले साल, एक साल और 1/2 साल की कोशिश की थी और एक ही समस्या थी। चूंकि हम इस समस्या को जीत नहीं पाए, इसलिए हम विंडोज एनटी पर वापस गए। एनटी पर हमें यह समस्या कभी नहीं मिली।

अब हम इसे पाने के लिए फिर कोशिश कर रहे हैं ताकि हम फिर से विंडोज 7 पर जा सकें। ऐसा लगता है कि बहुत से लोगों को यह समस्या थी लेकिन उन्होंने जो भी समाधान पाया और पोस्ट किया है, मुझे ऐसा लगता है कि मुझे क्या चाहिए।

किसी भी मदद की सराहना की जाएगी। धन्यवाद।

+0

आईआईएस से प्राप्त त्रुटि संदेश क्या है? – Treborbob

+0

Err.description "006 ~ एएसपी 0178 ~ सर्वर है। क्रेट ऑब्जेक्ट एक्सेस त्रुटि ~ सर्वर पर कॉल। अनुमतियों की जांच करते समय क्रिएटऑब्जेक्ट विफल रहा। इस ऑब्जेक्ट को एक्सेस अस्वीकार कर दिया गया है।" err.number = -2147024891 – user1894838

+0

क्या आपने ऐपपूल उपयोगकर्ता/iusr को स्थानीय व्यवस्थापक बनाने का प्रयास किया है? सिर्फ परीक्षण के लिए ... या ऐपूल के लिए अन्य विंडोज उपयोगकर्ता का उपयोग करें और वेब एप्लिकेशन प्रतीक्षा करें ... क्या आपने वर्चुअल निर्देशिका के बजाय वेब एप्लिकेशन जोड़ने की कोशिश की है? – ulluoink

उत्तर

0

यह पृष्ठ बताता है कि समस्या वीबी रनटाइम को असाइन किए गए एक्सेस अधिकार हो सकती है। Msvbvm60.dll पर सभी को पढ़ने और अनुमतियों को निष्पादित करने का प्रयास करें।

http://support.microsoft.com/kb/278013

+0

पीटर धन्यवाद, मैंने पहले कोशिश की थी। मैंने "हर कोई", "iusr_comp_name", "नेटवर्क सेवा" – user1894838

4

मैं दृढ़ता से पहुँच उल्लंघन लगता है Procmon का उपयोग करें। मेरे पास साल पहले एक समान समस्या थी, और यह एकमात्र चीज थी जिसने इसे हल किया। उस परिदृश्य में, यह सिस्टम अस्थायी फ़ोल्डर पर अनुमतियों की कमी के रूप में सामने आया।

यदि आप Procmon से परिणाम पोस्ट करते हैं, तो मैं इस उत्तर को और अधिक सहायक होने में संशोधन कर सकता हूं।

+0

हाय डेविड के लिए अधिकार चलाए और अधिकार निष्पादित किए, मैंने प्रोसेस मॉनीटर जोड़ा। जब मैं इस एएसपी पेज को चलाने की कोशिश करता हूं, PRL.asp, यह कहता है कि प्रक्रिया का नाम w3wp.exe है ... ऑपरेशन क्वेरी है सभी जानकारीफाइल ... पथ: डी: \ xxx \ PRL.asp ... परिणाम: ओवरफ़्लो बफर .. ... अगली पंक्ति कहती है: प्रक्रिया का नाम w3wp.exe है ... ऑपरेशन QueryOpen है ... पथ: डी: \ xxx \ prl.asp \ web.config ... परिणाम: पथ नहीं मिला। --------------धन्यवाद। कोई विचार? – user1894838

+0

ऐसा लगता है कि आपके पास वेब.कॉन्फिग फ़ाइल नहीं है - क्या अन्य त्रुटियां हैं? –

+0

यह एक पुराना एएसपी ऐप है, हमारे पास एक ग्लोबल.सा है और कोई web.config आवश्यक नहीं है। अन्य त्रुटियां: RegQueryValue और RegQueryKey कहें नाम नहीं मिला। कुछ प्रविष्टियों में बफर टू छोटे या बफर ओवरफ्लो कहते हैं। – user1894838

4

समस्या आईआईएस से संबंधित है जो फ़ाइल सिस्टम पर आपके कस्टम वीबी 6 सक्रिय एक्स डीएल तक पहुंचने में सक्षम नहीं है। मैंने एक कस्टम डीएल पंजीकृत किया है, जिसे मैंने डिफ़ॉल्ट वेब एप्लिकेशन के समान निर्देशिका में बनाया है और ऑब्जेक्ट बनाने के लिए एएसपी प्राप्त करने में सक्षम था।

यहाँ मैं क्या किया है:

  • स्वच्छ विंडोज 7 प्रोफेशनल 64 बिट, SP1 के स्थापित करें। डिफ़ॉल्ट अनुप्रयोग पूल के लिए 32-बिट एप्लिकेशन सक्षम, आईआईएस प्रबंधक का उपयोग करना -

  • विंडोज एएसपी सुविधा

  • केवल 64-बिट Windows के लिए यह कदम सक्षम करें।

enable 32-bit application pool

  • एक सरल VB6 सक्रिय एक्स dll बनाएँ (वर्ग के नाम "CXUtils है।। Utils ") दो इनपुट संख्या जोड़ता है, और परिणाम देता है कि

Utils.cls:

Public Function Sum(ByVal a As Integer, ByVal b As Integer) As Integer  
    Sum = a + b 
End Function 
  • यह महत्वपूर्ण कदम है - एक प्रशासनिक आदेश प्रॉम्प्ट में, VB6 सक्रिय एक्स रजिस्टर डिफ़ॉल्ट वेब अनुप्रयोग स्थान में dll: सी: \ inetpub \ wwwroot

Register Custom VB6 DLL

  • एक साधारण एएसपी पृष्ठ बनाएं और इंस्टॉल करें जो ऊपर से डीएलएल को तुरंत चालू करता है। स्थापित स्थान डिफ़ॉल्ट वेब अनुप्रयोग स्थान C: \ inetpub \ wwwroot

Default.asp:

<%@ Language=VBScript %> 
<% 
Option Explicit 
Response.Expires = 0 
Response.Expiresabsolute = Now() - 1 
Response.AddHeader "pragma","no-cache" 
Response.AddHeader "cache-control","private" 
Response.CacheControl = "no-cache" 

Function Sum(a, b) 
    Sum = a + b 
End Function 

Function Sum2(a, b) 
    Dim adder 
    set adder = Server.CreateObject("CXUtils.Utils") 
    Sum2 = adder.Sum(a, b) 
    set adder = nothing 
End Function 
%> 
<html> 
    <head> 
     <title>Add</title> 
    </head> 
    <body> 
    <b>2 + 3</b> = <%= Sum(2,3) %><br /> 
    <b>3 + 4</b> = <%= Sum2(3,4) %> 
    </body> 
</html> 
  • वेब अनुप्रयोग के लिए ब्राउज़ करें और देखें कि परिणाम

Sample asp page results

मेरी माफी माँगती है अगर यह सभी संकलित नहीं होती है - प्रारूप प्राप्त करने के लिए बहुत सारे संपादन थे सही ढंग से दिखाई देने के लिए टिंग।

+0

धन्यवाद चू, मेरी पुरानी एक्सपी मशीन पर, यह घटक प्रबंधक में या REGSVR32 के साथ COM ऑब्जेक्ट को पंजीकृत किए बिना ठीक काम करता है। लेकिन नई विंडोज 7 मशीन पर, यह createObject लाइन पर विफल रहता है। मैं इसे किसी भी या दोनों तरीकों से पंजीकृत करने का प्रयास करूंगा। शायद कुछ आसान इतना आसान होगा जिससे इस समस्या की बेहतर समझ हो जाएगी। – user1894838

+0

हे च्यू, मैं बस regsvr32 के साथ पंजीकृत हूं और यह काम करता है मैं अनियंत्रित करने का प्रयास करूँगा और फिर घटक प्रबंधक का उपयोग करूँगा। फिर दोनों। आपकी मदद के लिए धन्यवाद। मैं इस साधारण COM ऑब्जेक्ट की जटिलता को बढ़ाने की कोशिश करूंगा, जब तक यह हमेशा विफल रहता है। इससे मुझे बेहतर समझने देना चाहिए। धन्यवाद आपकी मदद --- --- डौग – user1894838

0

मुझे लगता है कि मुझे एक ही समस्या है। मैं एक वीबी 6 डीएलएल में डीबग कोड इंटरैक्टिव करने की कोशिश कर रहा था जो क्लासिक एएसपी एप्लिकेशन से वीबी 6 आईडीई में चल रहा था। जब एप्लिकेशन ने सर्वर को निष्पादित किया। क्रेटऑब्जेक्ट कथन ने इसे निम्न त्रुटि लौटा दी:

सर्वर ऑब्जेक्ट: 006 ~ एएसपी 0178 ~ सर्वर। क्रिएट ऑब्जेक्ट एक्सेस त्रुटि ~ सर्वर पर कॉल। अनुमतियों की जांच करते समय क्रिएटऑब्जेक्ट विफल रहा। इस वस्तु को एक्सेस अस्वीकार कर दिया गया है।

बीटीडब्ल्यू, मैं विंडोज 7 वातावरण में आईआईएस 7.5 चला रहा हूं। अंततः मुझे एक माइक्रोसॉफ्ट आलेख मिला, जिसमें कहा गया था कि समस्या डीसीओएम में वीबी एएसपी डिबगिंग और/या डीसीओएम के साथ अपर्याप्त अनुमतियों के लिए एक लापता रजिस्ट्री प्रविष्टि के कारण आईआईएस नहीं थी। लेख के लिए यूआरएल http://support.microsoft.com/kb/q259725 है। मैंने लगभग # 1 कार्य लागू किया। बाद में एक बार फिर से बूट, मैं एएसपी से वीबी डीएलएल कोड में कदम उठा सकता है। माइक्रोसॉफ्ट के लिए एक चॉकलेट, और मैं अक्सर यह नहीं कहता :-)

0

डीएलएलएल को डीकॉमएनएफजी पर डीसीओएम एप्लीकेशन के रूप में स्थापित करने का एक और तरीका है। यह विभिन्न प्रमाण-पत्रों के तहत चलाएगा।