PRB: Server objekt chyba "ASP 0177:80040154" Server.CreateObject.


Příznaky


Při pokusu spustit stránku Active Server Pages (ASP), která používá metody Server.CreateObject k vytvoření instance ovládacího prvku ActiveX, zobrazí se následující chybová zpráva:
Chyba objektu serveru 'ASP 0177:80040154' metoda Server.CreateObject selhala / < cesta > / < yourasp.asp >< řádek #> volání metody Server.CreateObject se nezdařilo. Nelze vytvořit instanci objektu požadavku.

Příčina


Zde jsou uvedeny některé obvyklé příčiny této chyby:
  • Ovládací prvek není správně zaregistrován.
  • "Zaznamenány na uživatele"--obvykle anonymní účet--nemá dostatečná oprávnění ke spuštění ovládacího prvku. V mnoha případech anonymní přihlášení účtu (IUSR_ < počítač >) nemá příslušná oprávnění na určité adresáře soubory nebo určité komponenty a její závislosti. Při menší časté, pokud oprávnění registru určité klíče nejsou nastaveny správně, způsobí selhání inicializace ovládacího prvku.
  • "Everyone" skupiny byl odebrán z nutnosti ČÍST oprávnění některých klíčů registru z důvodu chybné pojem, všichni uživatelé rozumí každý, když ve skutečnosti jednoduše znamená všechny ověřené uživatele v doméně nebo počítači.
  • Adresář obsahující soubory databáze v případě databázový soubor, například Access nebo FoxPro neposkytuje dostatečná oprávnění pro ověřené uživatele.

Řešení


Upozornění: Následující kroky předpokládají znalost Internet Information Server a úpravy registru. Vždy je doporučeno zálohovat registr před provedením jakýchkoli změn. Vzhledem k tomu, že tato chyba je přiřazena nesprávná oprávnění na soubory nebo nastavení registru, je nutné provést následující kroky:
  1. Zjistěte, kdo je uživatel ověřen. Chcete-li zjistit, který uživatel ověřen, přidejte následující kód k horní části stránky ASP:
          <%      Response.Write("LOGON_USER: " & _      Request.ServerVariables("LOGON_USER"))      %>
    Pokud LOGON_USER prázdná, jsou ověřeni jako IUSR_machine. Jinak zobrazí LOGON_USER < doména\uživatel > jméno ověřeného uživatele, který se pokouší vytvořit objekt.
  2. Zkontrolujte, zda ověřený uživatel (nebo skupiny) oprávnění nezbytné adresáře, soubory a klíče registru. To vyžaduje znalost adresáře, soubory a klíče registru, které jsou specifické pro ovládací prvek. Dále je uveden seznam požadavků pro ActiveX Data Objects.

Adresář/soubor oprávnění pro konkrétní případ ADO

   \InetPub - IUSR_<machine> READ   \InetPub\wwwroot - IUSR_<machine> READ   \Program Files\Common Files\System\ADO - IUSR_<machine> READ   \Program Files\Common Files\System\OLE DB - IUSR_<machine> READ   \Program Files\Common Files\ODBC\Data Sources -IUSR_<machine> READ   \WinNT - IUSR_<machine> CHANGE   \WinNT\System32 - IUSR_<machine> READ   \WinNT\System32\Inetsrv\Asp - IUSR_<machine> READ   \WinNT\System32\Inetsrv\Asp\Cmpnts - IUSR_<machine> READ   \WinNT\Temp - IUSR_<machine> CHANGE 

Oprávnění registru pro konkrétní případ ADO

Zajistit klíče uvedené níže jsou nastavena následující oprávnění: oprávnění:
   <machine>\Administrator - Full Control   Creator Owner           - Full Control   Everyone                - READ   INTERACTIVE             - Special Access (Query Value, Set Value, Create                                             Subkey, Enumerate Subkeys,                                             Notify, Delete)   SYSTEM                  - Full Control 
Klíče:
      HKEY_CLASSES_ROOT      \LICENCES   \CEDD4F80-B43C-11cf-837C-00AA00573EDE      HKEY_CLASSES_ROOT      \ADODB.Command      \ADODB.Connection      \ADODB.Parameter      \ADODB.Recordset 

Oprávnění souborů a složek pro případ databáze

Přesvědčte se, zda databáze soubory a složky obsahující soubory databáze poskytují ke čtení, zápisu a spouštění oprávnění pro ověřené uživatele nebo skupinu.

Stav


Toto chování je záměrné.

Další informace


Obecné potíže při fotografování kroky

  1. Zkontrolujte, pokud je správně nainstalován ASP spuštěním ukázkové "ADO pomocí metody Server.CreateObject" v "Active Server stránky Roadmap\More Samples složky."
  2. Ujistěte se, že všechny knihovny DLL jsou registrovány pomocí nástroje Regsvr32.
  3. Zkontrolujte, zda nejsou k dispozici více verzí knihovny DLL registrován a položka registru odkazuje na správný.
  4. Přesvědčte se, zda všechny knihovny DLL pomocí modelu vláken typu Apartment a nejsou jediné zřetězený (viz poznámka 3 níže).
  5. Přesvědčte se, že primární řadič domény (PDC) přidělil Everyone "Přistupovat k tomuto počítači ze sítě" práva. Pokud služba IIS je primární řadič domény obsahující < počítač > IUSR_ také zajišťují tato práva také jako "Přihlásit se místně" práva.

Takto kontrola rychlé oprávnění

  1. Vynutit anonymní zrušením Basic a NT výzva a odpověď (NTCR) ve Správci služby IIS
  2. Přidejte do skupiny Administrators zobrazit, pokud záleží na tom dočasně IUSR_ < počítač >. Pokud ano, problém je problém oprávnění.
  3. Zapnutí auditování NT (jak je uvedeno níže) a akci opakujte.

Není tak rychlý oprávnění kontrolovat postup

  1. Vynuťte anonymní zrušením Basic a NT výzva a odpověď (NTCR) ve Správci služby IIS.
  2. Vytvořte nový účet uživatele NT nazvaný IUSR_Test.
  3. Udělit IUSR_Test úplný kořenové jednotce a přenést tato oprávnění úplně dolů. Později IUSR_Test lze odstranit, a tím je odstranit z adresáře ani soubory.
  4. Zapnutí auditování NT (jak je uvedeno níže) a akci opakujte.
Povolit auditování NT: Chcete-li povolit auditování, otevřete Správce uživatelů a vyberte "Audit" zásady "nabídky. Vyberte selhání "Souboru a objektu Access". "Windows NT Explorer" otevřete a vyberte kořenový adresář pevného disku. Klepněte pravým tlačítkem myši a vyberte "vlastnosti." Klepněte na kartu zabezpečení a klepněte na tlačítko auditování. Přidejte uživatele zájmu (ten vrácené stránky ASP nebo IUSR_machine) a vyberte všechny zaškrtávací políčka selhání. Zajistěte, aby že tato nastavení použít pro všechny složky. Pomocí "Prohlížeč událostí" v tématu selhání přístup (vyberte z nabídky protokol "Zabezpečení"). Ujistěte se, že vypnete auditování po dokončení změn. Poznámka 2: Jet používá k určení umístění dočasných souborů, které jsou vytvořeny během operací JET systému TEMP a TMP proměnné prostředí. Ve výchozím nastavení tyto proměnné prostředí jsou definovány pro uživatele a nejsou systémové nastavení. Tato nastavení můžete proveďte jednu z dvě operace. Možnost 1. V souboru autoexec.bat přidejte něco podobné následující dva řádky:
   Set TEMP=C:\Temp   Set TMP =C:\Temp 
Možnost 2. Klepněte pravým tlačítkem myši Můj počítač:
  1. Klepněte na příkaz Vlastnosti a vyberte kartu prostředí.
  2. Klepněte na položku v seznamu Systémové proměnné (to nahoře).
  3. V proměnné a hodnotu upravit ovládacího prvku zadejte následující příkaz:
          Variable = Temp      Value    = C:\Temp 
  4. Klepněte na tlačítko nastavit. Budete nyní viz TEMP byl přidán do seznamu Systémové proměnné.
  5. Opakujte postup pro proměnnou TMP.
  6. Restartování počítače se změny projevily.
Kromě toho bylo zjištěno, že < počítač > IUSR_ potřebuje oprávnění změnit adresáře WinNT při použití ovladače databáze aplikace Access vytvořit dočasné soubory. Poznámka 3: Ve výchozím nastavení ASP vytvoří jedním podprocesem apartment klientů, což znamená, že pouze jedním podprocesem apartment servery inproc poskytnuto kontextu požadované zabezpečení předaných Internetové informační služby. Všechny ostatní modely podprocesů jsou spuštěny v kontextu systému. To znamená spustí knihovny DLL pomocí jediného modelu vláken se v rámci systému zabezpečení a nikoli jako určené jako ověřený uživatel.

Odkazy


Další informace naleznete v následujících článcích znalostní báze Microsoft Knowledge Base: 174811 souborů: ověřování a zabezpečení pro vývojáře v Internetu pro nejnovější články znalostní báze Knowledge Base a další informace o odborné pomoci na Visual InterDev a Active Server Pages naleznete na následující stránce na webu technické podpory společnosti Microsoft: