2010-10-28 17 views
5

J'ai une fonction qui utilise MSXML pour publier un document XML qui a commencé hier à échouer malgré qu'aucune modification ne soit apportée au code. La fonction est la suivante:MSXML "Le système ne peut pas localiser la ressource spécifiée"

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 

Le document XML et l'adresse étant transmis en sont à la fois correct - la ligne qui provoque l'erreur est xmlHTTP.send(xmlDoc). J'ai essayé ceci sur 2 machines différentes avec la même erreur chaque fois et ai également essayé de réinstaller MSXML3, sans succès.

L'exception est lancée:

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" 

Répondre

9

Il est avéré être un problème de mise en réseau - je ne me doutais pas cela d'abord que l'erreur a été si vite qui ne suggère pas un problème avec le point final . Le problème était avec une règle qui avait été ajoutée (ne demandez pas pourquoi) au pare-feu empêchant la communication avec l'adresse de destination.

+1

up! juste parce qu'il m'a sauvé débogage inutile – idanshmu

+0

Merci de m'avoir conduit dans la bonne direction. Le message d'erreur m'a d'abord fait penser que j'allais devoir résoudre les permissions sur l'objet COMS lui-même. Mais, l'erreur signifiait simplement que l'objet xmlhttp n'était pas capable de se connecter à l'URL avec succès. – WWC

+0

Nous venons de faire descendre un serveur. Un autre serveur essayait de faire une demande XMLHTTP à ce serveur et nous avons eu cette même erreur msxml3.dll. Je n'aurais pas mis 2 et 2 ensemble sur la base du message d'erreur, semblait plus comme un problème de serveur local avec la DLL que la DLL incapable de trouver le serveur qu'il recherchait. Bon à savoir. –

0

Si vous êtes en train de traiter le xml ou dtd est déconnecté, vous pouvez utiliser: xmlDoc.resolveExternals = Faux