在ASP.NET中将XML输出为文件
我无法将XML流发送到客户端浏览器。我已经对此进行了大量研究,一切看起来都是正确的——而且,类似的代码在这个应用程序的早期版本中也可以使用。知道我做错了什么吗 以下代码不会抛出错误,但不会在客户端计算机上下载文件在ASP.NET中将XML输出为文件,asp.net,vb.net,Asp.net,Vb.net,我无法将XML流发送到客户端浏览器。我已经对此进行了大量研究,一切看起来都是正确的——而且,类似的代码在这个应用程序的早期版本中也可以使用。知道我做错了什么吗 以下代码不会抛出错误,但不会在客户端计算机上下载文件 Public Shared Sub Export(ByVal source As DataTable) Try With Current.Response Dim xml As String
Public Shared Sub Export(ByVal source As DataTable)
Try
With Current.Response
Dim xml As String = CreateExcelXMLFromDataTable(source.DefaultView)
.Clear()
.Buffer = True
.ContentType = "application/vnd.ms-excel"
.AddHeader("Content-Disposition", String.Concat("attachment;filename=", "export.xlsx", ";"))
.AddHeader("Content-Length", xml.Length.ToString)
.Charset = ""
.Write(xml)
.Flush()
.Close()
End With
Catch ex As Exception
Console.WriteLine(ex.Message.ToString)
End Try
End Sub
谢谢 如果在Ajax请求中调用此函数,它将无法工作。您必须进行完整回发才能将文件发送到客户端
您可以使用弹出窗口(
window.open
)或带有下载asp.net页面URL的iframe
发送文件,而不会在当前页面中导致完全回发,这将调用导出
功能 你有什么迹象表明这是错误的?是否有错误消息?意外输出?完全没有错误消息。什么都没有,否则我会希望下载一个文件或弹出一个下载对话框。你确定代码正在执行吗?当您调试这个时,会发生什么?请注意,在调试器之外,您将忽略此代码中的所有错误。您希望Console.WriteLine在web应用程序中具体做什么?所以很可能有一个错误,你只是显式地忽略它。是的,我可以一步一步地完成代码。它肯定正在执行,我可以看到xml变量肯定正在填充文本。Console.writeline只是用于调试/开发目的。如果将.End()
放在.Close()
之后,会发生什么?下面是一篇关于如何使其工作的好文章。谢谢你们的帮助,伙计们。