我正在使用AppPool身份从IIS站点运行soffice.exe以将docx转换为pdf。
不知何故,它试图在C:/Windows/LibreOffice中创建文件,这会导致访问错误。是什么导致了这种行为?
这是代码部分:
string libreOfficePath = @"C:\Program Files\LibreOffice\program\soffice.exe";
string docxPath = @"D:\docs\abc.docx";
string pdfOutputPath = @"D:\docs\out";
string logPath = @"D:\docs\logs";
string arguments = "--headless --convert-to pdf " + docxPath + " --outdir " + pdfOutputPath;
var startInfo = new ProcessStartInfo
{
FileName = libreOfficePath,
Arguments = arguments,
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true,
WorkingDirectory = @"C:\Program Files\LibreOffice\program"
};
这些是我的设置:x1c 0d1x我已为这些文件夹授予应用池权限。
如果我将应用程序池标识设置为localsystem,该命令将完成此工作并创建pdf。
如果我设置为apppool identity,进程会尝试在C:/Windows/LibreOffice中创建临时文件,这显然会失败。
应用程序监视器记录以下内容:
这是它得到的命令行:
"C:\Program Files\LibreOffice\program\soffice.exe" "--headless" "--convert-to" "pdf" "D:\docs\abc.docx" "--outdir" "D:\docs\out" "-env:OOO_CWD=2C:\\Program Files\\LibreOffice\\program"
1条答案
按热度按时间c90pui9n1#
尝试了几百次之后,指定文件夹:
解决了这个问题