¿Cómo muestro un PDF utilizando PdfSharp en ASP.Net MVC?

Estamos creando una aplicación ASP.Net MVC que necesita poder generar un PDF y mostrarlo en la pantalla o guardarlo en algún lugar que el usuario pueda acceder fácilmente. Estamos utilizando PdfSharp para generar el documento. Una vez que está terminado, ¿cómo permitimos que el usuario guarde el documento o lo abra en un lector? Estoy especialmente confundido porque el PDF se genera en el lado del servidor, pero queremos que se muestre en el lado del cliente.

Aquí está el controlador MVC para crear el informe que hemos escrito hasta ahora:

public class ReportController : ApiController
{
    private static readonly string filename = "report.pdf";

    [HttpGet]
    public void GenerateReport()
    {
        ReportPdfInput input = new ReportPdfInput()
        {
            //Empty for now
        };

        var manager = new ReportPdfManagerFactory().GetReportPdfManager();
        var documentRenderer = manager.GenerateReport(input);
        documentRenderer.PdfDocument.Save(filename); //Returns a PdfDocumentRenderer
        Process.Start(filename);
    }
}

Cuando esto se ejecuta, me sale unUnauthorizedAccessException adocumentRenderer.PdfDocument.Save(filename); que dice,Access to the path 'C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\report.pdf' is denied. Tampoco estoy seguro de qué pasará cuando la líneaProcess.Start(filename); es ejecutado.

Este es el código enmanager.GenerateReport(input):

public class ReportPdfManager : IReportPdfManager
{
    public PdfDocumentRenderer GenerateReport(ReportPdfInput input)
    {
        var document = CreateDocument(input);
        var renderer = new PdfDocumentRenderer(true, PdfSharp.Pdf.PdfFontEmbedding.Always);
        renderer.Document = document;
        renderer.RenderDocument();

        return renderer;
    }

    private Document CreateDocument(ReportPdfInput input)
    {
        //Put content into the document
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta