Asp.net core 2.0使用Wkhtmltopdf.NetCore在GoDaddy共享主机报组策略阻止错误
问题原因
报错本质是GoDaddy Windows共享服务器的组策略限制了可执行程序的直接启动权限,Wkhtmltopdf.NetCore组件底层需要调用wkhtmltopdf.exe可执行文件完成HTML转PDF的操作,共享主机为了安全普遍会禁止用户自行上传的exe文件执行,和文件夹读写权限无关。
可行解决方案
方案1:更换不需要调用exe的PDF类库
你当前的项目已经引用了
Select.HtmlToPdf.NetCore包,这个类库是纯托管代码实现,不需要调用外部exe,完全避开组策略限制,直接替换Wkhtmltopdf相关代码即可:public byte[] GenerateFormPdf(OnlineFormModel model) { try { SelectPdf.HtmlToPdf converter = new SelectPdf.HtmlToPdf(); SelectPdf.PdfDocument doc = converter.ConvertHtmlString(model.HtmlData); byte[] pdfData = doc.Save(); doc.Close(); return pdfData; } catch (Exception ex) { Global.SaveError(ex); TempData["Message"] = ex.ToString(); } return null; }不需要修改其他文件写入逻辑,直接替换原有
GenerateFormPdf方法的实现即可。方案2:更换托管类型
如果必须使用Wkhtmltopdf的功能,建议将Windows共享主机升级为VPS/独立服务器,你可以获得完全的管理员权限,自行调整组策略放开exe执行限制,共享主机场景下你没有权限修改系统组策略配置。
方案3:调整Wkhtmltopdf路径配置
少数共享主机会允许临时目录下的exe执行,你可以把
wkhtmltopdf.exe复制到网站的临时目录下,再在Wkhtmltopdf.NetCore初始化时指定对应路径尝试,成功率较低仅作为备选测试方案。
额外配置检查
你当前的web.config已经配置了Full信任级别,不需要额外调整权限相关配置,共享主机的组策略限制属于平台侧限制,无法通过应用配置修改。
内容的提问来源于stack exchange,提问作者Prashant Sharma
相关产品推荐
相关产品推荐

