PRB: Servidor objeto Error 'ASP 0177:80040154' Server.CreateObject


Síntomas


Al intentar ejecutar una página de páginas Active Server (ASP) que utiliza Server.CreateObject para crear instancias de un componente ActiveX aparece el siguiente mensaje de error:
Error de objeto de servidor 'ASP 0177:80040154' error de Server.CreateObject / < ruta > / < yourasp.asp >< línea Nº > Error en la llamada a Server.CreateObject. No se puede crear la instancia del objeto de solicitud.

Causa


Aquí están algunas de las causas típicas de este error:
  • El control no está registrado correctamente.
  • El "Logged On User"--normalmente la cuenta anónima: no tiene los permisos adecuados para ejecutar el control. En muchos casos la cuenta de inicio de sesión anónimo (IUSR_ < equipo >) no tiene los permisos adecuados en determinados directorios o archivos o el componente específico y sus dependencias. Aunque es menos frecuente, si los permisos del registro para determinadas teclas no se configuran correctamente, hace que el control de error a inicializado
  • El grupo "Todos" se le ha quitado los permisos de lectura en ciertas claves del registro debido a la noción errónea que todos significa cualquier persona, cuando en realidad sólo significa la validación de todos los usuarios en el equipo dominio.
  • En el caso de una base de datos de archivo, como Access o FoxPro, el directorio que contiene los archivos de base de datos no proporciona suficientes permisos para el usuario autenticado.

Resolución


Advertencia: La siguiente supone una familiaridad con Internet Information Server y modificar el registro. Siempre es recomendable hacer copia de seguridad del registro antes de realizar ningún cambio. Dado que este error está asociado con la configuración de permisos incorrectos en los archivos o configuraciones del registro, debe completar los siguientes pasos:
  1. Averigüe quién es un usuario autenticado. Para determinar qué usuario se está autenticando, agregue el código siguiente a la parte superior de la página ASP:
          <%      Response.Write("LOGON_USER: " & _      Request.ServerVariables("LOGON_USER"))      %>
    Si el LOGON_USER está en blanco, se que se autentican IUSR_MACHINE. De lo contrario, el LOGON_USER muestra el nombre de < domain\user > del usuario autenticado que está intentando crear el objeto.
  2. Confirme que el usuario autenticado (o grupo) tiene permisos en los directorios necesarios, archivos y claves del registro. Esto requiere el conocimiento de los directorios, archivos y claves del Registro específicas del control. A continuación es una lista de los requisitos de los objetos de datos ActiveX.

Permisos de directorio o archivo para el caso concreto de 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 

Permisos del registro para el caso concreto de ADO

Garantizar que se establecen los siguientes permisos en las claves siguientes: permisos:
   <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 
Claves:
      HKEY_CLASSES_ROOT      \LICENCES   \CEDD4F80-B43C-11cf-837C-00AA00573EDE      HKEY_CLASSES_ROOT      \ADODB.Command      \ADODB.Connection      \ADODB.Parameter      \ADODB.Recordset 

Permisos de archivos y carpetas para el caso de la base de datos

Asegúrese de que los archivos de base de datos y las carpetas que contienen los archivos de base de datos ofrecen permisos de lectura, escritura y ejecución para el usuario autenticado o grupo.

Estado


Este comportamiento es una característica del diseño de la aplicación.

Más información


Pasos de captación de problemas generales

  1. Comprueba si ASP se ha instalado correctamente el ejemplo "ADO utiliza Server.CreateObject" en la "carpeta de ejemplos de páginas Active Server Roadmap\More".
  2. Asegúrese de que todos los archivos DLL se registran con Regsvr32.
  3. Asegúrese de que no hay varias versiones de la DLL registrada y los puntos de entrada del registro correctamente.
  4. Asegúrese de que los archivos DLL están utilizando el modelo de subprocesamiento de apartamento y no son un único subproceso (ver nota 3 a continuación).
  5. Confirme que el controlador de dominio principal (PDC) ha asignado todos los derechos "Tener acceso a este equipo desde la red". Si IIS es un PDC de asegurarse de que la cuenta IUSR_ < equipo > también tiene estos derechos, así como "Iniciar sesión localmente" derechos.

Pasos de verificación de permisos rápido

  1. Forzar anónimo desactivando Basic y NT desafío y respuesta (NTCR) en el Administrador de servicios de IIS
  2. Agregar temporalmente la cuenta IUSR_ < equipo > al grupo de administradores para ver si hace la diferencia. Si es así, el problema es un problema de permisos.
  3. Activar la auditoría de NT (como se indica a continuación) y vuelva a intentarlo.

No tan rápidos permisos comprobación los pasos

  1. Forzar anónimo desactivando Basic y NT desafío y respuesta (NTCR) en el Administrador de servicios de IIS.
  2. Crear una nueva cuenta de usuario de NT llamada IUSR_Test.
  3. Dar el Control total de la unidad raíz de IUSR_Test y en cascada estos permisos hacia abajo. Más adelante, IUSR_Test se puede eliminar, con lo que se quita de todos los directorios o archivos.
  4. Activar la auditoría de NT (como se indica a continuación) y vuelva a intentarlo.
Habilitar la auditoría de NT: para habilitar la auditoría, abra Administrador de usuarios y seleccione "Auditoría" de las directivas "menú. Seleccione el error de "Archivo y acceso a objetos". Abra "Explorador de Windows NT" y seleccione la raíz del disco duro. Pulse el botón derecho y seleccione "propiedades". Seleccione la ficha seguridad y haga clic en el botón de auditoría. Agregue el usuario de interés (uno devuelto por la página ASP o IUSR_machine) y Active todas las casillas de verificación de error. Asegúrese de que aplicar esta configuración a todas las carpetas. Utilice el Visor de sucesos"" para ver los errores de acceso (seleccione "Seguridad" en el menú de registro). Asegúrese de que desactiva la auditoría cuando haya terminado de realizar cambios. Nota 2: Jet utiliza las variables de entorno TMP y TEMP del sistema para especificar la ubicación de los archivos temporales que se crean durante las operaciones de JET. De forma predeterminada estas variables de entorno se definen para los usuarios y no son valores de todo el sistema. Para configurar estas cuentas puede realizar una de las dos operaciones. Opción 1. En el archivo autoexec.bat, agregue algo similar a las dos líneas siguientes:
   Set TEMP=C:\Temp   Set TMP =C:\Temp 
Opción 2. Haga clic en Mi PC:
  1. Haga clic en propiedades y seleccione la ficha entorno.
  2. Haga clic en una entrada en el cuadro de lista de Variables del sistema (situado en la parte superior).
  3. En el control de la Variable y modificar el valor, escriba lo siguiente:
          Variable = Temp      Value    = C:\Temp 
  4. Haga clic en establecer. Usted podrá ahora vea TEMP se ha agregado a la lista de la variable del sistema.
  5. Repita el proceso para la variable TMP.
  6. Reinicie el equipo para que surtan efecto los cambios.
Además, se ha encontrado que IUSR_ < equipo > necesita permiso de cambio en el directorio WinNT para crear archivos temporales cuando se utiliza el controlador de base de datos de Access. Nota 3: Predeterminada ASP crea a clientes de apartamento de un único subproceso, lo que significa que sólo los servidores de contenedor uniproceso inproc son correctos el contexto de seguridad deseado pasado IIS. Todos los otros modelos de subprocesos se ejecutan en el contexto del sistema. Esto significa, se iniciará un archivo DLL mediante el modelo de subprocesamiento único en el contexto de seguridad del sistema y no como se pretendía que el usuario autenticado.

Referencias


Para obtener información adicional, consulte los artículos siguientes en Microsoft Knowledge Base: 174811 archivo: autenticación y seguridad para desarrolladores de Internet para los últimos artículos de Knowledge Base y otra información de soporte técnico en Visual InterDev y páginas Active Server, vea la siguiente página en el sitio de soporte técnico de Microsoft: