Validating with DTD - connection forcibly closed

◇◆丶佛笑我妖孽 提交于 2019-12-23 17:37:53

问题


I'm validating a document with the DTD in the document which is not on my machine, it is stored on the internet.

I am currently getting the following exception

System.Xml.XmlException: An error has occurred while opening external DTD 'http://xml.cxml.org/schemas/cXML/1.2.020/cXML.dtd': Unable to connect to the remote server ---> 
System.Net.WebException: Unable to connect to the remote server --->
System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host 216.109.104.11:80
   
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   
at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
   --- End of inner exception stack trace ---
   
at System.Net.HttpWebRequest.GetResponse()
   
at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri, ICredentials credentials)
   
at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials)
  
at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
   
at System.Xml.XmlTextReaderImpl.OpenStream(Uri uri)
   
at System.Xml.XmlTextReaderImpl.DtdParserProxy_PushExternalSubset(String systemId, String publicId)
   --- End of inner exception stack trace ---
   
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   
at System.Xml.XmlTextReaderImpl.DtdParserProxy_PushExternalSubset(String systemId, String publicId)
   
at System.Xml.XmlTextReaderImpl.DtdParserProxy.System.Xml.IDtdParserAdapter.PushExternalSubset(String systemId, String publicId)
   
at System.Xml.DtdParser.ParseExternalSubset()
   
at System.Xml.DtdParser.ParseInDocumentDtd(Boolean saveInternalSubset)
   
at System.Xml.DtdParser.Parse(Boolean saveInternalSubset)
   
at System.Xml.XmlTextReaderImpl.ParseDoctypeDecl()
   
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   
at System.Xml.XmlTextReaderImpl.Read()
   
at System.Xml.XmlValidatingReaderImpl.Read()
   
at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
   
at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   
at System.Xml.XmlDocument.Load(XmlReader reader)
   
at cXML.ResponseFactory..ctor(HttpRequest request) :: System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host 216.109.104.11:80
   
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   
at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
   --- End of inner exception stack trace ---
   
at System.Net.HttpWebRequest.GetResponse()
   
at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri, ICredentials credentials)
   
at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials)
   at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
   
at System.Xml.XmlTextReaderImpl.OpenStream(Uri uri)
   
at System.Xml.XmlTextReaderImpl.DtdParserProxy_PushExternalSubset(String systemId, String publicId) :: System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host 216.109.104.11:80
   
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   
at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
   
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)

I know the file is accessible as I can browse to it. But why cannot .NET access it?! Thanks in advance.


回答1:


I got following exception when i browse the [http://xml.cxml.org/schemas/cXML/1.2.020/cXML.dtd ] dtd file.

XML Parsing Error: syntax error Location: http://xml.cxml.org/schemas/cXML/1.2.020/cXML.dtd Line Number 15, Column 1:

Just download the dtd file and try to access the dtd locally. You can narrow down your problem.



来源:https://stackoverflow.com/questions/1783615/validating-with-dtd-connection-forcibly-closed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!