2010-10-28 58 views
5

Ho una funzione che utilizza MSXML per pubblicare un documento XML che ieri ha iniziato a mancare nonostante non siano state apportate modifiche al codice. La funzione è la seguente:MSXML "Il sistema non è in grado di individuare la risorsa specificata"

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 

Il documento XML e l'indirizzo vengono passati entrambi sono corrette - la linea che causa l'errore è xmlHTTP.send(xmlDoc). Ho provato questo su 2 macchine diverse con lo stesso errore ogni volta e ho anche provato a resettare MSXML3, senza successo.

L'eccezione generata è:

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" 

risposta

9

Si è rivelato essere un problema di rete - Non ho il sospetto che questo in un primo momento come l'errore è stato sollevato così in fretta che non segnala un problema con l'endpoint . Il problema era con una regola che era stata aggiunta (non chiedete perché) al firewall per impedire la comunicazione con l'indirizzo di destinazione.

+1

up! solo perché mi ha salvato il debugging inutile – idanshmu

+0

Grazie per avermi guidato nella giusta direzione. Inizialmente il messaggio di errore mi ha fatto pensare che avrei dovuto risolvere i problemi con le autorizzazioni all'oggetto COMS stesso. Ma l'errore voleva dire che l'oggetto xmlhttp non era in grado di connettersi correttamente all'url. – WWC

+0

Abbiamo appena avuto un server inattivo. Un altro server stava tentando di fare una richiesta XMLHTTP a quel server e abbiamo ottenuto lo stesso errore msxml3.dll. Non avrei messo insieme 2 e 2 in base al messaggio di errore, sembrava più un problema di un server locale con la DLL che la DLL non riusciva a trovare il server che cercava. Buono a sapersi. –

0

Se sono solo l'elaborazione del xml o DTD non è in linea, è possibile utilizzare: xmlDoc.resolveExternals = False