gpt4 book ai didi

c# - 在浏览器中呈现 PDF - 在 "localhost"下运行时显示 PDF,但在用我的机器名称替换 "localhost"时不显示

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:30 25 4
gpt4 key购买 nike

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

有趣的是,当 PDF 不呈现时,我可以右键单击 PDF 应该呈现的区域并选择“另存为”并将 PDF 保存到我的电脑,打开它,它只打开美好的。

问题:任何人都可以就可能导致问题的原因提供任何建议吗?在 IIS 托管方面,“localhost”在所有方面都与我的机器名称完全相同吗?

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

Controller 代码

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 View

@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>

最佳答案

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

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

所以,如果浏览器不支持<object> , 然后它将呈现 <embed>标签。

关于c# - 在浏览器中呈现 PDF - 在 "localhost"下运行时显示 PDF,但在用我的机器名称替换 "localhost"时不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17173132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com