PRB: Se produce un error en el método de carga al cargar el archivo XML sobre HTTP

Síntomas

Cuando utilice el método Load de ambos el MSXML. DOMDocument o el objeto MSXML2. Objeto DOMDocument para cargar un archivo XML sobre HTTP, el método falla con este mensaje de error:

-2146697209 - no hay datos disponibles para el recurso solicitado.

Solución

Utilice el componente ServerXMLHTTP (introducido en MSXML 3.0) para cargar el documento. Debe utilizar el método setProperty del objeto MSXML2. DOMDocument para establecer la propiedad ServerHTTPRequest como true. Un valor de True para la propiedad ServerHTTPRequest como indica que debe utilizar el componente ServerXMLHTTP "thread-safe" para cargar el documento. ServerXMLHTTP admite carga sólo sincrónico. Por lo tanto, debe establecerse la propiedad async en False cuando ServerHTTPRequest como se establece en True.

Más información

Este problema no ocurre si el método Load apunta a una ruta de acceso del archivo. Este problema puede producirse si DOMDocument carga un archivo XML sobre HTTP cuando MSXML funciona en un entorno de núcleo múltiples del servidor o del cliente.

Pasos para reproducir el comportamiento

El código VBScript siguiente hace que el mensaje de error:
<%Option Explicit%><%Response.Buffer = False%>
<html>
<head>
</head>
<body>

<%
Dim oXML, oXMLError, ReturnValue, x
Set oXML = Server.CreateObject("MSXML2.DOMDocument")
oXML.async = False

ReturnValue = oXML.Load("http://myserver/myxmlfile.xml")
Response.write "Result of load method is =" & ReturnValue & "<br>"
If ReturnValue = False Then
Set oXMLError = oXML.ParseError
Response.Write "&#xa0;&#xa0;" & oXMLError.ErrorCode & " - " & oXMLError.Reason & " URL=" & oXMLError.URL &

"<br>"
Set oXMLError = Nothing
End If

Response.Write oxml.parseError.reason

For x = 0 to oxml.childNodes.length
Response.Write "Node " & x & ". "
Next

Set oXML = Nothing
%>
</body>
</html>

Para establecer el método SetProperty a True, agregue la siguiente línea en el código anterior, inmediatamente después de la línea: oXML.async = False:
oxml.setProperty "ServerHTTPRequest", true
Para los servidores que se ejecutan en una intranet, la propiedad ServerHTTPRequest como requiere ejecutar al proxy de WinHTTP utilidad de configuración Proxycfg.exe. No puede configurar estas opciones mediante el Panel de Control.

Actualmente, la herramienta Proxycfg sólo está disponible al instalar el software o los service Pack siguientes:
  • Windows Server 2003 (todas las ediciones)
  • Windows XP Service Pack 1 (SP1)
  • Windows 2000 Service Pack 3 (SP3) o posterior
  • SharePoint Portal Server
Para obtener más información acerca de cómo ejecutar la utilidad Proxycfg.exe, vea el archivo Readme.txt que se incluye con la descarga o con el SDK de Microsoft XML 3.0. Después de ejecutar la herramienta Proxycfg.exe y actualizar el registro, no se puede restaurar la configuración del registro anterior.

Si se permite el acceso anónimo en el directorio virtual que contiene la página ASP que carga el archivo XML, asegúrese de que la cuenta que se utiliza para el acceso anónimo es una cuenta de dominio. De forma predeterminada, Microsoft Internet Information Server (IIS) establece esta cuenta a una cuenta del servidor local, como IUSR_MACHINENAME. Esta cuenta no tenga derechos suficientes para el archivo XML que se encuentra en el otro servidor.
 
Si el servidor IIS no tiene Microsoft Internet Explorer 5.01 Service Pack 2 (SP1) o una versión posterior instalado, recibirá el siguiente mensaje de error cuando intenta tener acceso a la página ASP:

Error 'ASP 0115'
Error inesperado
/MyVirtualDirectory/MyASPPage.asp 
Se ha producido un error capturable en un objeto externo. La secuencia de comandos no puede continuar.

Referencias

Kit de desarrollo de Software de Microsoft XML 3.0
Propiedades

Id. de artículo: 281142 - Última revisión: 9 ene. 2017 - Revisión: 1

Comentarios