2013-08-06 24 views
0

동적 인 콘텐츠를 스크래핑하기 위해 내 사이트를 PhantomJS와 통합하려고합니다. Process.Start를 통해이 작업을 수행하고 스크래핑 스크립트와 함께 PhantomJS를 시작합니다. 이것은 내 devmachine에서 잘 작동합니다.ASP.NET에서 Process.Start를 시작 하시겠습니까?

내 호스트에서 내가 갖고있는 신뢰 수준을 검사했으며 수준은 제한 없음으로 전체 신뢰보다 높습니까?

여전히 Process.Start에 대한 사용 권한이 거부되었습니다.

신뢰 수준에 제한이없는 이유는 무엇입니까?

[편집] System.ComponentModel.Win32Exception (0X80004005) : 액세스가 System.Diagnostics.Process.Start에서 System.Diagnostics.Process.StartWithCreateProcess (ProcessStartInfo를 startInfo)에서 거부() StrengthTracker.Controllers.AppController.Index에서()

과정을 실행하기위한 코드는 다음과 같습니다

 string path = Server.MapPath("."); 
     path = Directory.GetParent(path).FullName; 
     path = path + "\\data"; 

     Response.Write("path:" + path); 

     string a = "\"" + path + "\\scrape.js" + "\" \"" + url + "\""; 
     var processStartInfo = new ProcessStartInfo 
     { 
      CreateNoWindow = true, 
      RedirectStandardOutput = true, 
      RedirectStandardInput = true, 
      UseShellExecute = false, 
      Arguments = a, 
      FileName = path + "\\phantomjs.exe" 
     }; 

     var process = new Process 
     { 
      StartInfo = processStartInfo, 
      EnableRaisingEvents = true 
     }; 

     //pipe the output 
     process.OutputDataReceived += (sender, args) => outputBuilder.Append(args.Data); 

     try 
     { 
      process.Start(); 
      process.BeginOutputReadLine(); 
      process.WaitForExit(20000); 
      process.CancelOutputRead(); 
     } 
     catch (Exception x) 
     { 
      return Content(x.ToString()); 
     } 


     return Content(outputBuilder.ToString()); 

[편집 다시] 사이트 내 호스트의 네트워크 공유에있는 것으로 보인다. 경로는 "\ foo \ bar \ bla"와 같습니다.

그런가요? 공유에서 뭔가를 시작하는 제한?

+0

process.start를 호출하기 전에 사용중인 코드를 제공 할 수 있습니까? –

답변

1

당신은
http://support.microsoft.com/default.aspx?scid=kb;en-us;317012

을 시도 할 수 있습니다 그렇지 않으면, 그것은 폴더 보안 문제가 될 수 있습니다. 파일이 보관되는 폴더에는 사용자에 대한 수정 권한이 있어야합니다. IIS 프로세스가 실행되는 IIS_WPG, 해당 사용자가 Users 그룹에 속한 경우이 사용자는 폴더에 대한 수정 권한이 있어야합니다.

관련 문제