问题描述
我以前曾让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指向自身有关。希望这可以在某个时候帮助别人。