ASP MVC Rotativa(wkhtmltopdf)到虚拟目录

时间:2017-04-25 10:56:44

标签: c# asp.net-mvc wkhtmltopdf rotativa iis-10

我不想在git页面上提出这个问题/错误,因为我想我只是错误地使用了包。

我在IIS10上运行了一个ASP MVC站点。实际的文件夹结构是:

x:/
    library/  <-- Physical
    Web Sites/
        Site A/
            Files/  <-- Virtual
        Site B/
        Site C/

使用IIS10,我在网站A下创建了一个名为Files的虚拟文件夹,其物理路径为X:/ library /(其原因是在站点之间共享资源并将内容转移到外部网站路径)。

用户可以将文件上传/下载到虚拟目录中。我也可以毫无问题地从那里加载图像。

但是,我似乎无法让Rotativa从我的应用程序中写入虚拟目录。显然命令行无论如何都看不到虚拟目录,但是从cmd到物理目录创建文件可以正常工作。

从应用程序内部:

X:/Web Sites/Files/Test.pdf会产生Unable to write to destination
X:/library/Test.pdf会产生Access to the path is denied(尽管已经NETWORK SERVICE完全控制了library文件夹和子文件夹)

我使用的代码是:

var pdf_output= new ActionAsPdf("Summary", new { id = id }) {
        FileName = String.Format("Summary_{0}.pdf",id.ToString()),
        CustomSwitches = "--print-media-type"
      };
byte[] pdf_data= pdf_output.BuildPdf(ControllerContext);
System.IO.File.WriteAllBytes(String.Format("xxx",id.ToString()), pdf_data);

使用各种目录路径组合代替&#34; xxx&#34;。

有没有人有这方面的经验可能会告诉我哪里出错了?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

没关系,解决了。我需要通过添加用户library向物理IIS AppPool\Site A目录授予相应的应用程序池权限。

如果有人试图调查,请提前致谢