2010-10-28 356 views
5

Tengo una función que utiliza MSXML para publicar un documento XML que ayer comenzó a fallar a pesar de que no se realizó ningún cambio en el código. La función es la siguiente:MSXML "El sistema no puede encontrar el recurso especificado"

Public Function PostFile(ByVal address As String, ByVal data As Byte()) As xmldocument 
    Dim xmlHTTP As New MSXML2.XMLHTTP 
    Dim response As New XmlDocument 

    Dim xmlDoc As New MSXML2.DOMDocument 

    Try 
     xmlDoc.load(data) 
     xmlHTTP.open("post", address, False) 
     xmlHTTP.send(xmlDoc) 

     If xmlHTTP.responseXML.xml <> String.Empty Then 
      response.LoadXml(xmlHTTP.responseXML.xml) 
      Return response 
     Else 
      Dim result As String = "<NO_Response><Error>the post succeeded to " + address + " but there was no responce returned</Error><Hint>Check FireWall Settings</Hint></NO_Response>" 
      response.loadxml(result) 
      Return response 
     End If 

    Catch ex As Exception 
     'Error logging code removed 

    End Try 
    Return Nothing 
End Function 

el documento XML y la dirección en la que se pasa son ambas correctas - la línea que hace que el error es xmlHTTP.send(xmlDoc). He intentado esto en 2 máquinas diferentes con el mismo error cada vez y también he intentado reinstalar MSXML3, sin éxito.

La excepción lanzada es:

InnerException: Nothing 
Message:  "The system cannot locate the resource specified. " 
Source:   "msxml3.dll"  
StackTrace:  " at MSXML2.XMLHTTPClass.send(Object varBody) at comms.HTTPHandler.PostFile(String address, Byte[] data) in D:\SCC\Main\Sender\Http.vb:line 42" 

Respuesta

9

Resultó ser un problema de red - No sospechaba esto al principio ya que el error se levantó tan rápidamente que no sugieren un problema con el punto final . El problema era con una regla que se había agregado (no preguntar por qué) al cortafuegos que evitaba la comunicación con la dirección de destino.

+1

arriba! solo porque me ahorró una depuración innecesaria – idanshmu

+0

Gracias por guiarme en la dirección correcta. El mensaje de error inicialmente me hizo pensar que iba a tener que solucionar los permisos para el objeto COMS. Pero el error solo significaba que el objeto xmlhttp no podía conectarse correctamente a la url. – WWC

+0

Acabamos de tener un servidor inactivo. Otro servidor estaba intentando realizar una solicitud XMLHTTP a ese servidor y obtuvimos el mismo error msxml3.dll. No habría puesto 2 y 2 juntos según el mensaje de error, parecía más un problema de servidor local con el DLL que el DLL no pudo encontrar el servidor que estaba buscando. Bueno saber. –

0

Si se acaba de procesar el XML o DTD está en línea, puede utilizar: xmlDoc.resolveExternals = False

Cuestiones relacionadas