I've been banging my head against the wall for a couple days now on this issue. My ultimate goal is to launch a ghostscript executable from a WCF service. My troubles began soon as I moved this create process under IIS. The personal web server in Visual Studio worked without a hitch. I'm also able to launch this from WinForms without any issues. But the security around IIS is a tough nut to crack. This is for a good reason of course.
I have tried many different approaches, including impersonating, all kinds of different security tweaks, none of which have worked. I have moved the create process code into a code behind asp.net page in order to deal with IIS security directly. I am impersonating a fully authorized domain account in Web.Config. My App Pool identity is set to this same activity directory account. The exe is sitting in the bin folder of the asp.net site, I have given the folders & site full permissions. Is there anything left to do? The below code hangs on the WaitForExit() method but works fine from Windows App.
If all else fails this could be moved into a Windows Service possibly, the security is probably not as limiting as IIS. Also I'm learning that WCF can be self-hosted rather than using IIS.
Does anyone have experience with this issue and have recommendations?
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(GhostScriptPath);
startInfo.UseShellExecute = false;
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.WorkingDirectory = @"c:\aTemp";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = " -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=" + Convert.ToString(1) + " -sDEVICE=ljet4 -sOutputFile=\"\\\\spool\\" + @"\\CONFP01\CON-2-M4345-01" + "\" \"" + pathAndFileName + "\"";
// Start the process
System.Diagnostics.Process proc = System.Diagnostics.Process.Start(startInfo);
proc.WaitForExit(); //Hangs on this line of code