【问题标题】:Validating with DTD - connection forcibly closed使用 DTD 验证 - 强制关闭连接
【发布时间】:2010-12-19 12:14:04
【问题描述】:

我正在使用不在我机器上的文档中的 DTD 验证文档,它存储在 Internet 上。

我目前遇到以下异常

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)

我知道该文件是可以访问的,因为我可以浏览它。但是为什么.NET 不能访问它呢?! 提前致谢。

【问题讨论】:

    标签: c# xml c#-2.0 dtd xml-validation


    【解决方案1】:

    浏览 [http://xml.cxml.org/schemas/cXML/1.2.020/cXML.dtd] dtd 文件时出现以下异常。

    XML 解析错误:语法错误 地点:http://xml.cxml.org/schemas/cXML/1.2.020/cXML.dtd 第 15 行,第 1 列:

    只需下载 dtd 文件并尝试在本地访问 dtd。您可以缩小问题范围。

    【讨论】:

    • 这就是我最后所做的。我创建了一个解析器,然后告诉它使用本地副本。
    猜你喜欢
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    相关资源
    最近更新 更多