Asp.net 没有文件时出现PDFHandler.ash错误

Asp.net 没有文件时出现PDFHandler.ash错误,asp.net,vb.net,ashx,Asp.net,Vb.net,Ashx,我的ASHX处理程序在生成PDF时遇到问题 当用户点击“查看PDF”按钮时,它将在数据库中查找PDF文件并显示它,但是如果那里没有PDF文件,它将显示一个空白页面,说“没有可用的PDF”,但我在这行代码中得到一个“空引用”错误: ms.WriteTo(context.Response.OutputStream) 下面是处理程序的代码: Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.

我的ASHX处理程序在生成PDF时遇到问题

当用户点击“查看PDF”按钮时,它将在数据库中查找PDF文件并显示它,但是如果那里没有PDF文件,它将显示一个空白页面,说“没有可用的PDF”,但我在这行代码中得到一个“空引用”错误:

ms.WriteTo(context.Response.OutputStream)
下面是处理程序的代码:

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
    'This class takes the uniqueidentifier of an image stored in the SQL DB and sends it to the output stream
    'This saves storing copies of image files on the web server as well as in the DB
    context.Response.Clear()
    If context.Request.QueryString("fileSurveyID") IsNot Nothing Then
        Dim filesID As String = context.Request.QueryString("fileSurveyID")
        Dim fileName = String.Empty
        Dim ms As MemoryStream = GetPDFFile(filesID)
        context.Response.ContentType = "application/pdf"
        context.Response.AddHeader("Content-Disposition", "attachment;filename=" & fileName)
        context.Response.Buffer = True
        ms.WriteTo(context.Response.OutputStream)
        context.Response.End()
    Else
        context.Response.Write("<p>No pdf file</p>")
    End If
End Sub
publicssubprocessrequest(ByVal上下文作为HttpContext)实现IHttpHandler.ProcessRequest
'此类获取存储在SQL DB中的图像的唯一标识符,并将其发送到输出流
'这样可以将图像文件的副本保存在web服务器和数据库中
context.Response.Clear()
如果context.Request.QueryString(“fileSurveyID”)不是空的,那么
Dim filesID为String=context.Request.QueryString(“fileSurveyID”)
Dim fileName=String.Empty
Dim ms As MemoryStream=GetPdfile(文件ID)
context.Response.ContentType=“应用程序/pdf”
context.Response.AddHeader(“内容处置”、“附件;文件名=“&filename”)
context.Response.Buffer=True
ms.WriteTo(context.Response.OutputStream)
context.Response.End()
其他的
context.Response.Write(“无pdf文件”

”) 如果结束 端接头

有人能告诉我如何消除此错误吗?

如果,您可能希望将以下内容移出

context.Response.End()
因此,无论何时,它都会执行

但是,如果没有可用的PDF,则执行以下行:

ms.WriteTo(context.Response.OutputStream)

这表明你的
if
条件有问题

简单的
if..Then
应该做到以下几点:

Dim ms As MemoryStream = GetPDFFile(filesID)
If ms IsNot Nothing Then
    context.Response.ContentType = "application/pdf"
    context.Response.AddHeader("Content-Disposition", "attachment;filename=" & fileName)
    context.Response.Buffer = True
    ms.WriteTo(context.Response.OutputStream)
    context.Response.End()
End If

您好,谢谢您的回复,这是我尝试查看时收到的错误。System.NullReferenceException:对象引用未设置为对象的实例。