我很难使用一些在我的开发环境中运行良好的 C#/ASP.NET (.Net 4) 代码,但不能在生产服务器上运行。
部分代码尝试启动一个新进程来运行 lame.exe(将 .WAV 文件转换为 .MP3):
Process convert = new Process
{
StartInfo =
{
FileName = AppDomain.CurrentDomain.BaseDirectory + "bin\\lame.exe",
Arguments = "--quiet -q 5 -b 16 \"" + filePath + "\" " + directory + "\\" + tempfile,
UseShellExecute = false,
RedirectStandardInput = true,
RedirectStandardOutput = true
}
};
convert.Start();
convert.WaitForExit();
这在我的 Windows 7 开发 PC 上运行良好。但是,在生产 Windows 2008R2 服务器上,它什么都不做:它不崩溃,也不抛出任何异常,只是什么都不做。
我意识到这几乎可以肯定是由用户权限引起的,但我正在努力解决这个问题。看了几十篇文章,其中一些相互矛盾,我不知道该怎么办。
应用程序需要做的就是lame.exe
从inetpub\site\bin
目录运行并将文件从一个目录吐出到另一个目录。我很确定这lame.exe
甚至还没有开始:将 StandardOutput 重定向到 StreamReader 后,我看不到任何输出。同样,显然不会产生任何异常或错误。
该应用程序在其自己的应用程序池中运行,位于“ApplicationPoolIdentity”下。W3 发布服务在本地系统下运行,我尝试勾选“允许服务与桌面交互”。
我什至已将网络服务帐户的(临时)完全访问权限授予整个\inetpub\site
目录。
有谁知道在 IIS7.5 下获取 ASP.NET 以创建新进程的“最终”方式,以及我需要使用哪些凭据和/或权限?是否有任何简单的方法可以查看我的外部进程是否正在启动,以便我可以缩小明显缺乏权限的地方?