C# 在浏览器中呈现PDF-在“下运行时显示PDF”;“本地主机”;,但在替换“时不显示”;“本地主机”;用我的机器名
我有一个MVC应用程序,它显示从数据库检索的字节数据的PDF,如果我的浏览器指向“localhost”,则PDF在我的internet浏览器中呈现得很好。但是,如果我用实际的机器名更改“localhost”,则PDF不会呈现。除此之外,该应用程序的工作方式完全符合我的预期。顺便说一句,我的站点托管在本地IIS中(显然) 有趣的是,当PDF没有呈现时,我可以右键单击PDF应该呈现的区域,然后选择“另存为”并将PDF保存到我的计算机中,打开它,它就会很好地打开 问题:有人能就问题的原因提供一些建议吗?说到IIS托管,“localhost”在所有方面都与我的机器名完全相同吗 我不确定这是否重要,但以下是我的代码: 控制器代码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保存到我的计算机中,打开它,它就会很好地打开 问题:有人能就问题的原因提供一些建议吗
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”和你说的一样吗?