1

我正在构建一个项目,该项目将允许用户将视频上传到服务器,并且服务器将以某些格式对视频进行编码。上传完成后,应该执行一个 vbs 脚本来执行我需要它执行的操作。

不过,我很难让脚本在服务器上运行。在服务器本身的 VS2012 中调试时,我可以让它正常工作。但是,当我部署它并运行相同的代码时,它不起作用。

我试着退后一步,我试图让任何程序执行,但它不起作用。这是我正在运行的代码,以在上传文件后尝试打开记事本:

//file is saved
                try
                {
                    ProcessStartInfo psi = new ProcessStartInfo(@"C:\Windows\System32\notepad.exe");
                    Process proc = new Process();
                    proc.StartInfo = psi;
                    proc.StartInfo.FileName = @"C:\Windows\System32\notepad.exe";
                    bool didItStart = proc.Start();                    
                }
                catch(Exception ex)
                {                   
                    using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\test\log.txt"))
                    {
                        file.WriteLine(ex.InnerException + " " + ex);
                    }
                }

这不会引发任何错误,不会将任何内容写入日志文件。什么都没发生。我已经用谷歌搜索了一段时间,发现并尝试了一堆没有用的东西,包括模拟、更改脚本所在文件夹的权限以及更改脚本所在文件夹的权限以包含IIS 用户,但没有任何效果。

为什么这不起作用?

4

1 回答 1

1

当我运行您的代码时,任务管理器显示有一个新的 Notepad.exe 进程以“ASP.NET v4.0”用户身份运行。我看不到这个记事本实例,因为它在与我自己的会话分开的非交互式会话中运行。并非所有应用程序都能在这样的会话中成功运行;未加载用户配置文件,这可能会导致不期望它的应用程序出现问题。

即使你让它工作,产生任意数量的进程也是一个值得怀疑的策略。如果您的任务是计算密集型的(可能是这样的),那么一旦您的任务多于核心,您的性能就会受到影响。考虑重新设计您的解决方案以使用工作队列。

于 2013-11-01T15:37:50.570 回答