Rotativa退出在服务器上的.NET Core项目中使用CSS文件

问题描述

我以前曾让Rotativa使用Viewaspdf()函数创建部分视图的PDF。该函数仍然呈现PDF,并且数据仍然正确,但是由于某些原因,视图中包含的CSS和图像不再将其转换为PDF。除了使用win-acme为HTTPS安装证书以外,我对服务器或IIS均未进行任何更改。知道为什么会这样吗?视图本身可以很好地工作,并使用图像和CSS填充。

.NET Core项目被编译为针对Windows x64,并且是自包含的(不依赖于具有正确框架的服务器),尽管服务器上安装了.NET Core Hosting Bundle。

我到处搜寻解决方案,并尝试: 重新安装Visual C ++(wkhtmltopdf依赖于其中的一些.dll)

下载了最新版本的wkhtmltopdf并将.exe放在wwwroot下的Rotativa文件夹中

修改后的C:\ Windows \ System32 \ drivers \ etc \ hosts取消注释

#localhost name resolution is handled within DNS itself.
127.0.0.1       localhost
::1             localhost

链接更改为CSS。目前,我已经尝试过:

<link rel="stylesheet" type="text/css" href="/css/cards/cardBase.css" media="screen" /><link rel="stylesheet" type="text/css" href="@Url.Content("~/css/cards/cardBase.css")" media="screen" />

这些都不能解决问题。在“中断” Url.Content(“〜pathtocss”)的剃刀语法之前,效果很好。

我们甚至竭尽全力启动另一个VM,并从头开始,所有操作都获得了相同的结果。

这时我遇到了很多想法,该应用程序的所有其他方面都正常运行。

当我尝试在localhost上的Visual Studio中调试此程序时,一切也很好。几乎就像是我无法解决的权限问题。

解决方法

结果证明该问题与IIS有关。我已将站点的绑定设置为机器本身的IP,将其更改为“所有未分配的地址”即可解决此问题。我认为这与本地主机无法使用127.0.0.1 IP指向自身有关。希望这可以在某个时候帮助别人。