Asp.net 返回ASHX中的ZipFile

Asp.net 返回ASHX中的ZipFile,asp.net,vb.net,ashx,Asp.net,Vb.net,Ashx,我有一个ASHX文件,它接收一些参数(用户和密码)。使用这个参数,我需要发送一个zipfile作为ASHX的结果。我已经写了这段代码,但当我打开下载的zip时,它似乎已损坏 Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest context.Response.Clear() context.Response.ContentType = "a

我有一个ASHX文件,它接收一些参数(用户和密码)。使用这个参数,我需要发送一个zipfile作为ASHX的结果。我已经写了这段代码,但当我打开下载的zip时,它似乎已损坏

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

    context.Response.Clear()

    context.Response.ContentType = "application/x-zip-compressed"



    Dim sLoginName As String = context.Request.QueryString("LOGIN_NAME")
    Dim sLoginPassword As String = context.Request.QueryString("LOGIN_PASSWORD")

    If (Not String.IsNullOrEmpty(sLoginName) And
        Not String.IsNullOrEmpty(sLoginPassword)) Then

        If (CheckLogin(sLoginName, sLoginPassword)) Then



            Dim sZipUpdatePath As String = String.Empty

            Dim sVersionToInstall As String = GetVersionToInstall(sLoginName, sLoginPassword)
            Dim sZipName As String = "UPDATE.zip"

            If (Not String.IsNullOrEmpty(sVersionToInstall) And
                Not String.IsNullOrEmpty(sZipName)) Then

                sZipUpdatePath = "~\Updates\" + sVersionToInstall + "\" + sZipName



                context.Response.TransmitFile(context.Server.MapPath(sZipName))


            End If

        End If

    End If

End Sub

如何解决它?

测试了您的代码。我得到了一个正确的zip文件。您确定
UPDATE.zip
一开始没有损坏吗?很遗憾,没有,zip文件没有问题。在你的zip文件中插入了文件吗?是的,我已经插入了,当我打开zip时,我看到了文件。zip文件是否与处理程序同名?因为如果未到达
context.Response.TransmitFile
,您仍然会得到一个zipfile,因为您将
context.Response.ContentType
指定为zip。但是它将被破坏,因为它不是一个真正的zipfile。处理程序的名称是Update.ashx,zip的名称是Update.zipHow文件是否被破坏:它是否被截断,它的长度是否正确,但有损坏的数据,或者它在开始时是否有一些额外的数据?测试您的代码。我得到了一个正确的zip文件。您确定
UPDATE.zip
一开始没有损坏吗?很遗憾,没有,zip文件没有问题。在你的zip文件中插入了文件吗?是的,我已经插入了,当我打开zip时,我看到了文件。zip文件是否与处理程序同名?因为如果未到达
context.Response.TransmitFile
,您仍然会得到一个zipfile,因为您将
context.Response.ContentType
指定为zip。但它将被损坏,因为它不是一个真正的zipfile。处理程序的名称是Update.ashx,zip的名称是Update.zipHow文件是否已损坏:文件是否被截断,长度是否正确,但数据是否已损坏,或者在开始时是否有一些额外的数据?