想要在Application目录中执行exe,在Dev系统中它可以正常工作。在IIS中,它没有执行,我尝试过以下几点:
将默认应用程序池设置为本地系统
设置defualtpool,NETWORK_SERVICE,Everyone访问exe
启用32位应用程序到应用程序池
服务器版本:Windows Server 2012
IIS版本:IIS 8.0
以下是我的代码
p.StartInfo = new ProcessStartInfo();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = System.AppDomain.CurrentDomain.BaseDirectory.ToString() + "wkhtmltopdf\\wkhtmltopdf.exe";
string arg1 = "";
arg1 = "www.google.com" + " test.pdf";
p.StartInfo.Arguments = arg1;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.WaitForExit(60000);
p.Close();
p.Dispose();
答案 0 :(得分:0)
确保生成pdf文件的位置"每个人都可以访问它"
您似乎正在尝试将html数据转换为iis服务器上的pdf文件。确保IIS服务器可以访问您尝试转换的站点"检查您是否可以在IIS服务器上使用IE访问这些站点,因为可能存在代理问题"
答案 1 :(得分:0)
考虑设置exe的工作路径:
p.StartInfo.WorkingDirectory = System.AppDomain.CurrentDomain.BaseDirectory.ToString() + "wkhtmltopdf";
如果exe在内存中,还要检查任务管理器。 有时当一个批处理器出现低级别错误时会打开一个提示,而IIS不会捕获它,因此该进程会在内存中冻结。
还要考虑在exe中设置一个日志,以便了解出现了什么问题。
我有类似的问题。解决了在IIS应用程序外的另一个文件夹中移动exe。该文件夹应具有执行权限。