C# 在浏览器中呈现PDF-在“下运行时显示PDF”;“本地主机”;,但在替换“时不显示”;“本地主机”;用我的机器名

C# 在浏览器中呈现PDF-在“下运行时显示PDF”;“本地主机”;,但在替换“时不显示”;“本地主机”;用我的机器名,c#,asp.net-mvc,pdf,render,C#,Asp.net Mvc,Pdf,Render,我有一个MVC应用程序,它显示从数据库检索的字节数据的PDF,如果我的浏览器指向“localhost”,则PDF在我的internet浏览器中呈现得很好。但是,如果我用实际的机器名更改“localhost”,则PDF不会呈现。除此之外,该应用程序的工作方式完全符合我的预期。顺便说一句,我的站点托管在本地IIS中(显然) 有趣的是,当PDF没有呈现时,我可以右键单击PDF应该呈现的区域,然后选择“另存为”并将PDF保存到我的计算机中,打开它,它就会很好地打开 问题:有人能就问题的原因提供一些建议吗

我有一个MVC应用程序,它显示从数据库检索的字节数据的PDF,如果我的浏览器指向“localhost”,则PDF在我的internet浏览器中呈现得很好。但是,如果我用实际的机器名更改“localhost”,则PDF不会呈现。除此之外,该应用程序的工作方式完全符合我的预期。顺便说一句,我的站点托管在本地IIS中(显然)

有趣的是,当PDF没有呈现时,我可以右键单击PDF应该呈现的区域,然后选择“另存为”并将PDF保存到我的计算机中,打开它,它就会很好地打开

问题:有人能就问题的原因提供一些建议吗?说到IIS托管,“localhost”在所有方面都与我的机器名完全相同吗

我不确定这是否重要,但以下是我的代码:

控制器代码

public FileStreamResult PdfGenerator(string id)
{
    Stream fileStream = GeneratePdf(id);
    HttpContext.Response.AddHeader("content-disposition", "attachment; filename=form.pdf");
    return new FileStreamResult(fileStream, "application/pdf");
}

public Stream GeneratePdf(string id)
{
    // get and return the PDF byte data
    byte[] pdf = (from i in db.Pictures where i.GroupId == id && i.blah== "YES" select i.pdf).FirstOrDefault();
    Stream pdfStream = new MemoryStream(pdf);
    return pdfStream;
}

public ActionResult DisplayPdf(string id)
{
    Picture picture = (from i in db.Pictures where i.GroupId == id && i.blah== "YES" select i).FirstOrDefault();
    return View(picture);
}
显示PDF视图

@model blah.Models.Picture

    <object 
        data="@Url.Action("PdfGenerator", "ImageViewer", new { id = Model.GroupId })"
        type="application/pdf" 
        width="640" 
        height="480">
        <param value="transparent" name="wmode"/>
    </object>
@model blah.Models.Picture

下午好,尝试将以下内容添加到PdfGenerator函数中:

HttpContext.Response.AddHeader("X-Frame-Options", "SAMEORIGIN");

是否在IFRAME中呈现PDF?

奇怪的是,这是一个浏览器兼容性问题。这当然不能解释为什么它在localhost下工作,而不是在我的机器名下工作,但我所做的是在我的
对象
标记中添加以下内容:

<embed src="@Url.Action("PdfGenerator", "ImageViewer", new { id = Model.GroupId })" type="application/pdf" height="1024" width="768" />  


因此,如果浏览器不支持
,那么它将呈现
标记。

+1,这是我见过的最长的标题!)@Liam我还有一大堆其他的问题,标题很长,请随意向上投票,:)lolI不确定,我会假设“localhost”在IIS中与我的机器名是等价的。。。。我可能错了。不,忘了这一点,说它不适用于
对象
当你浏览到url时会发生什么?它有效吗?不,我只是在对象标记中呈现PDF。我真的把“SAMEORIGIN”和你说的一样吗?