2013-10-31 2 views
0

사용자가 비디오를 서버에 업로드 할 수있는 프로젝트를 만들고 서버가 특정 형식으로 비디오를 인코딩합니다. 업로드가 완료되면 vbs 스크립트를 실행하여 필요한 작업을 수행해야합니다.IIS에서 서버에서 실행할 프로그램 얻기 C#

그래도 서버에서 스크립트를 실행하는 데 어려움을 겪고 있습니다. 서버 자체에서 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); 
        } 
       } 

이 오류가 발생하지 않고, 아무것도 로그 파일에 기록되지 않은 : 여기에 파일을 업로드 한 후 시도하고 메모장을 실행하고있어 내 코드입니다. 아무 반응이 없습니다. 나는 잠시 동안 인터넷 검색을 해본 결과 impersonation을 비롯하여 스크립트가있는 폴더의 사용 권한을 변경하고 changing the permission of the folder the scripts are in to include the IIS user 등의 기능을 수행하지 못했던 많은 항목을 찾아서 사용해 보았습니다.

왜 작동하지 않습니까?

+0

시도해 보셨습니까 [http://forums.asp.net/t/1277084.aspx](http://forums.asp.net/t/1277084.aspx) – Zilog

+0

이것을 읽었습니까? http://stackoverflow.com/questions/4679561/system-diagnostics-process-start-not-work-fom-an-iis –

+0

작업 관리자에서 "notepad.exe"프로세스가 생성되는 것을 보시겠습니까? 프로그램이 사용자 세션에서 실행되지 않으므로 창이 나타나지 않습니다. – David

답변

0

코드를 실행하면 작업 관리자에서 "Notepad.exe"프로세스가 "ASP.NET v4.0"사용자로 실행되고 있음을 보여줍니다. 내 메모장과는 별도로 비대화 형 세션에서 실행되므로이 ​​메모장 인스턴스를 볼 수 없습니다. 모든 응용 프로그램이 이와 같은 세션에서 성공적으로 실행되는 것은 아닙니다. 사용자 프로파일이로드되지 않아이를 예상하지 못하는 응용 프로그램에 문제점이 발생할 수 있습니다.

이 기능을 작동 시키더라도 임의의 수의 프로세스를 생성하는 것은 의심스러운 전략입니다. 작업이 계산 바운드 인 경우 (이 경우처럼) 코어보다 많은 작업이 있으면 성능이 저하됩니다. 솔루션을 다시 작성하여 작업 대기열을 사용하는 방법에 대해 생각해보십시오.