从本地IIS中托管的Web服务打开Excel

时间:2015-02-16 15:14:21

标签: c# iis asp.net-web-api

我正面临着IIS Local的一个奇怪问题。我开发了一个webapi控制器,在某些时候打开Excel,用宏进行一些处理,然后关闭。这是用几个参数打开Excel的代码片段:

var procStartInfo = new ProcessStartInfo(
this.Parameters[ConsoleExecutionParameters.FileToExecute],
this.ParametersProcessed)
    {
        CreateNoWindow = false,
        UseShellExecute = false,
        RedirectStandardOutput = true,
        RedirectStandardError = true,
        RedirectStandardInput = true,
        WindowStyle = ProcessWindowStyle.Maximized,
        WorkingDirectory = workingDirectory
    };

using (var proc = new Process { StartInfo = procStartInfo })
{
    try
    {
        proc.EnableRaisingEvents = true;
        proc.Start();
        proc.WaitForExit(60000);
        proc.StandardInput.Flush();

        if (!proc.HasExited)
        ....

如果在IIS Express下运行WebAPI,必须说这段代码可以(并正确打开excel)。但是,在本地IIS下运行它时,将打开一个Excel进程(至少它显示在任务管理器中)但没有出现Excel窗口,当调用“proc.WaitForExit”指令时,应用程序似乎挂起,并且EXCEL。 EXE过程保持在“僵尸”状态。一段时间(60秒)后,我的应用程序超时,Excel.EXE进程仍然挂起。

有人知道它为什么在IIS Express上运行而在本地IIS中不起作用吗?

谢谢和亲切的问候。

0 个答案:

没有答案