MSXML «Система не может найти указанный ресурс» - PullRequest
7 голосов
/ 28 октября 2010

У меня есть функция, которая использует MSXML для публикации XML-документа, который вчера начал давать сбой, несмотря на то, что в код не было внесено никаких изменений.Функция выглядит следующим образом:

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

Документ XML и передаваемый адрес являются правильными - строка, которая вызывает ошибку, - xmlHTTP.send(xmlDoc).Я пробовал это на 2 разных машинах с одной и той же ошибкой каждый раз, а также пытался установить MSXML3 безуспешно.

Исключение:

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"

Ответы [ 2 ]

11 голосов
/ 01 ноября 2010

Оказалось, что это проблема с сетью - сначала я об этом не подозревал, так как ошибка возникла так быстро, что не указала на проблему с конечной точкой. Проблема была с правилом, которое было добавлено (не спрашивайте, почему) к брандмауэру, предотвращающему связь с адресом назначения.

0 голосов
/ 29 июля 2016

Если вы просто обрабатываете xml или dtd не в сети, вы можете использовать: xmlDoc.resolveExternals = False

...