【问题标题】:Error trying to download an XML file尝试下载 XML 文件时出错
【发布时间】:2017-12-27 12:16:39
【问题描述】:

我正在尝试下载一个 XML 文件,该文件已存在于指定路径中,我对 VB 不熟悉,可能此代码不正确,我需要帮助能够下载现有的 xml 文件,这是 代码

Protected Sub DownloadFile(ByVal sPath As String)
        Dim TargetFile As New System.IO.FileInfo(sPath)
        Response.Clear()
        Response.AddHeader("Content-Disposition", "attachment; filename=" +
            TargetFile.Name)
        Response.AddHeader("Content-Length", TargetFile.Length.ToString())
        Response.ContentType = "text/xml"
        Response.WriteFile(TargetFile.FullName)
        Response.End()
End Sub

控制台返回的错误

未捕获的错误:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器接收到的消息。此错误的常见原因是通过调用 Response.Write()、响应过滤器、HttpModules 或启用了服务器跟踪来修改响应。

问题情境化:

我已经序列化了一个对象并创建了一个XML文件,然后我只想下载这个文件,我的困难是下载文件。

Dim oObj1 As New System.Xml.Serialization.XmlSerializer(GetType(eSocial.Eventos.evtTabHorTur.eSocial))
Dim sFileName = Date.Now.ToString("yyyyMMddHHmmss") & ".xml"
Dim sPath = Constantes.Ambiente.CaminhoSite & "temp\" & sFileName
Dim oFile As New System.IO.StreamWriter(sPath)
oObj1.Serialize(oFile, eSocialCamposXml)
oFile.Close()

【问题讨论】:

  • 这是 ASP.NET VB 吗?
  • @Jaxi 是的,vb.net 标签说明了这一点
  • 不,我的意思是这是WinForms 还是这是ASP.NET
  • @Jaxi ASP.NET,我会在问题中说明这一点,谢谢。
  • 如何触发下载?这可能是来自 UpdatePanel 内部的某个控件吗?

标签: asp.net xml vb.net download


【解决方案1】:

您是说下载时遇到困难,但代码中除了显示写入文件然后序列化文件外没有任何内容。您将使用“StreamReader”或类似方式来读取文件。这是一个简单的例子。假设我在文件位置有一个 xml 结构,其架构如下:

<root>
    <test>Data</test>
</root>

我可以在 VB.NET 中编写它来获得它:

Sub Main()
  Dim xmlFile As XDocument
  Dim fileLocation = "D:\\Test Code\\Test.xml"
  Using sr = New StreamReader(fileLocation)
    xmlFile = XDocument.Parse(sr.ReadToEnd())
  End Using

  Console.WriteLine(xmlFile.Root.Element("test").Value.ToString)

  Console.ReadLine()
End Sub

【讨论】:

  • 你的回答帮我读了一个xml文件,可能不是很清楚,我想下载这个xml文件,大概是:Download (xmlFile),谢谢回复。
  • 文件在哪里?您的“下载”例程获取一个位置,然后尝试将其作为响应的一部分。当您说“下载”时,我想您可能想将您的问题改写为:“如何将文件添加到 HTTP 响应”。只是猜测,因为您没有说明 Response 是什么 System 或定义的类型。无论如何,我仍然会使用流读取器来替换“Dim TargetFile As New System.IO.FileInfo(sPath)”,因为它正在获取对文件的引用,而不是获取文件。
  • 我的下载尝试是基于这个问题的答案Downloading File from Server to Client in asp.net,我不熟悉VB,请原谅问题中的任何歧义,我会尝试使用stremreader。
  • 最大的问题是我有 XML 文件路径,但我不确定如何让客户端下载该文件。
  • 我猜这是什么意图?我的意图是将文件作为“XDocument”的对象下载到内存中。然后我可以用它做任何我想做的事情。您似乎在论坛上遵循某种方法来做我没有看到的事情。将此添加到 WebResponse 我没有得到问题的答案。除非您提供更多上下文。再加上那个页面很古老,2006 年是 .NET 3.0 之前的版本。如果您在撰写本文时正在做任何新的事情,那么可能有更有效的方法来做您想做的事情。
猜你喜欢
  • 1970-01-01
  • 2017-05-14
  • 2020-10-19
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
相关资源
最近更新 更多