Почему бы не настроить обработчик .pdf, поэтому все, что вам нужно сделать, это предоставить стандартную гиперссылку на файл .pdf, который затем предложит всплывающему окну сохранить файл?
например,
<a href="/Correspondence/12345.pdf">Download the PDF</a>
Для этого сначала необходимо определить обработчик в web.config
в подкаталоге «Корреспонденция», чтобы обрабатывать файлы .pdf
:
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.pdf" type="PdfHandler"/>
</httpHandlers>
</system.web>
</configuration>
Затем вы пишете сам обработчикВот как это следует сделать:
Public Class PdfHandler
Implements IHttpHandler
Public ReadOnly Property IsReusable As Boolean Implements System.Web.IHttpHandler.IsReusable
Get
Return False
End Get
End Property
Public Sub ProcessRequest(ByVal context As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest
If FileInvalid Then // Maybe want to check the path is valid, or they are authorised to see it, etc.
context.Response.StatusCode = 404
context.Response.StatusDescription = "404 Not Found"
context.Response.Flush()
Else
context.Response.ContentType = "application/pdf"
context.Response.AddHeader("Content-Disposition", "attachment; filename=MyPDF.pdf")
context.Response.BinaryWrite(PDFBinaryContent) // E.g. Loaded from a database, disk, etc
End If
End Sub
End Class
Наконец, просто сконфигурируйте IIS для передачи запросов на .pdf в движок .NET (не забудьте отключить «Проверка наличия файла», если это необходимо. И этодолжен это сделать.