MVC网站:找不到本地主机页面http错误404

时间:2019-07-27 17:10:29

标签: asp.net-core

我正在IIS中开发一个Asp.net MVC Core 2.2网站。 托管我的MVC Core项目的IIS网站已正确创建。我的项目正确生成了PDF文件。通常,我只是使用jquery函数在浏览器中打开该PDF文件:

 $.ajax({
            url: '@Url.Action("CreatePDF", "MyApiController", new { area= "MyArea" })',            
            dataType: 'json',                
            contentType: "application/json",
            type: 'POST',
            cache: false,            
            data: JSON.stringify(Filtro),
            success: function (d) {

                if (d.success == true) {
                    var item = d.data;
                    var pageurl = '@Url.Content("~/")' + 'Temporal/' + item.PDFName;
                    window.open(pageurl, '_blank');

                }

            },

但是,我刚刚意识到,该MVC Core网站不允许在浏览器中打开任何PDF或txt或jpg或任何文件,而是输出以下消息:

localhost page can’t be found 
http error 404 

我的问题是:

在MVC Core网站中,我应该如何从Controller从浏览器中打开PDF文件

        [Route("[action]")]
        [HttpPost]
        public ActionResult<BE_Reporte> CreatePDF(BE_Reporte c)
        {

            BL_Reporte b = new BL_Reporte();

            try
            {
                c = b.CreatePDF(c);

                return Ok(new
                {
                    data = c,
                    success = true,
                    Message = "PDF created OK"

                });

            }
            catch (Exception ex) { throw ex; }
            finally
            {
                b.Dispose(); b = null;
            }

        }

2 个答案:

答案 0 :(得分:0)

嘿404错误提示服务器未找到您请求的资源。首先尝试在控制器操作CreatePDF的开头放置一个断点。然后将属性路由更改为[HttpPost(“ [action]”)],并删除前面的[Route(“ [action]”)]调用,因为这可能会导致路由错误。
另外,请尝试在参数前添加[FromBody]。

...([FromBody] BE_Reporte ...)

您还可以使用<iframe> HTML标记显示pdf文件或使用<embed> 如此处所述:Load Generated PDF Data into IFRAME on ASP.NET MVC

答案 1 :(得分:0)

'@Url.Content("~/")' + 'Temporal/' + item.PDFName;生成的Url将类似于/Temporal/Test.pdf。对于此请求网址,您需要将Test.pdf放置在CoreMVC2_2\wwwroot\Temporal\Test.pdf处。

如果将Temporal放在wwwroot以外的其他文件夹中,建议将其移动到wwwroot,否则,需要配置Serve files outside of web root

对于客户端,您可能需要尝试以下代码:

var pageurl = '@Url.Content("~/")' + 'Temporal/' + 'Test.pdf';
console.log(pageurl);
var newWindow = window.open("", '_blank');
newWindow.location = pageurl;