2010-10-28 18 views
5

Mam funkcję, która używa MSXML do publikowania dokumentu XML, który wczoraj zaczął się nie udać pomimo braku zmian w kodzie. Funkcja jest następujący:MSXML "System nie może zlokalizować określonego zasobu"

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 

Dokument XML i adres były przekazywane w obie są poprawne - linia, która powoduje, że błąd jest xmlHTTP.send(xmlDoc). Próbowałem tego na 2 różnych maszynach z tym samym błędem za każdym razem, a także próbowałem ponownie zainstalować MSXML3, bez powodzenia.

Wyjątek rzucony jest:

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" 

Odpowiedz

9

Okazało się, że to kwestia networking - Nie podejrzewam, że w pierwszej chwili, gdy błąd został podniesiony tak szybko, które nie wskazują na problem z punktu końcowego . Problem polegał na tym, że dodano regułę (nie pytaj dlaczego) do zapory, która uniemożliwia komunikację z adresem docelowym.

+1

Up! tylko dlatego, że zaoszczędziło mi zbędnego debugowania – idanshmu

+0

Dziękuję za skierowanie mnie we właściwym kierunku. Komunikat o błędzie początkowo sprawił, że pomyślałem, że będę musiał mieć problemy z wykonaniem uprawnień do obiektu COMS. Ale błąd oznaczał, że obiekt xmlhttp nie mógł połączyć się z adresem URL. – WWC

+0

Po prostu zmarnowaliśmy serwer. Inny serwer próbował wykonać żądanie XMLHTTP na ten serwer i otrzymaliśmy ten sam błąd msxml3.dll. Nie wstawiłbym 2 i 2 razem w oparciu o komunikat o błędzie, wydawał się bardziej jak problem serwera lokalnego z DLL, niż DLL nie może znaleźć serwera, którego szukał. Dobrze wiedzieć. –

0

Jeśli dopiero przetwarzania XML lub DTD jest niedostępny, można użyć: xmlDoc.resolveExternals = false

Powiązane problemy