IIS에서 Process.Start("DocToPDF.exe", "file.docx file.pdf")
을 성공적으로 호출 할 수 없습니다.프로세스 IIS 서버 시작
- IIS Admin Service에서 데스크톱 상호 작용을 허용하려고 시도했습니다.
- 나는이의
아무도 일하지 않는 DocToPDF.exe를 포함하는 디렉토리을 DefaultAppPool에 대한 모든 권한을 부여 노력했다. DocToPDF.exe는 코드 1로 종료됩니다 (파일에 종료 코드를 씁니다 ...). 웹 사이트를 디버그 모드 (F5)로 실행하면 프로그램이 코드 0으로 종료되고 모든 것이 정상입니다. 디버그 모드에서 완벽하게 작동합니다. 내 생각 엔 Visual Studio에서 응용 프로그램을 시작할 때 잘 작동한다고했기 때문에 IIS 사용 권한과 관련이 있습니다.
는public byte[] DocToPdf(MemoryStream ms)
{
string fileName = Guid.NewGuid().ToString();
string path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\" + fileName + ".docx";
string newPath = path.Replace("docx", "pdf");
FileStream fs = new FileStream(path.ToString(), FileMode.OpenOrCreate);
fs.Write(ms.ToArray(), 0, ms.ToArray().Length);
fs.Close();
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.FileName = @"C:\Utils\OfficeToPDF.exe";
p.StartInfo.Arguments = path + " " + newPath;
p.Start();
p.WaitForExit();
System.IO.File.WriteAllText(@"C:\Utils\exitcode.txt", p.ExitCode.ToString());
var bytes = System.IO.File.ReadAllBytes(newPath);
System.IO.File.Delete(path);
System.IO.File.Delete(newPath);
return bytes;
}
http://stackoverflow.com/questions/8414514/iis7-does-not-start-my-exe-file-by-process-start similar questions. –
응용 프로그램 풀 ID (http://www.iis.net/learn/manage/configuring-security/application-pool-identities)를 확인하십시오. 로컬 로그온 권한이 있습니까? 'c : \ utils' 폴더에 대한 권한이 있습니까? % AppData % 폴더에 대한 권한이 있습니까? – jessehouwing
은 @jessehouwing과 동의했습니다 - apppool에서 사용중인 프로필/사용자 계정과 관련이 있습니다. 올바른 권한이 필요합니다. 기본적으로 제한적입니다. 표준 OOB 응용 프로그램 풀 사용자 계정 (ApplicationIdentity 내가 생각하는 것)보다 많은 권한을 가진 사용자 계정을 만들어야 할 수도 있습니다. 프로세스를 실행할 권한이 없을 수도 있습니다. –