IIS中的进程启动

时间:2015-09-24 09:28:10

标签: c# asp.net iis-7.5

想要在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();

2 个答案:

答案 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。该文件夹应具有执行权限。