2015-10-02 42 views
0

我試圖設置一個自我託管的OWIN webservice來啓動可執行進程。你可以從Owin自己託管的Web API restfull服務調用一個可執行文件

我用來調用executbal作爲一個簡單的測試控制檯應用程序的代碼不會從我自己託管的服務實例調用它。我沒有看到一個例外,我沒有看到任何類型的日誌。不知道什麼可能是錯的。我開始認爲這是不允許的。

 [Route("startApplication/{application}/{parameters}/{workingDirectory}")] 
     public IEnumerable<String> startApplication(string application, string parameters, string workingDirectory) { 
     logger.logInfo("startApplication restfully called"); 
     RunResults runResults = new RunResults { 
      ... 
     }; 
     application = new Uri(application).LocalPath;  
     try { 
      if (File.Exists(application)) { 
       using (Process proc = new Process()) { 
        logger.logInfo(String.Format("Attempting to start application: {0}", application)); 
        proc.StartInfo.FileName = application; 
        proc.StartInfo.Arguments = parameters; 
        proc.StartInfo.WorkingDirectory = workingDirectory; 
        proc.StartInfo.UseShellExecute = false; 
        proc.StartInfo.RedirectStandardOutput = true; 
        proc.StartInfo.RedirectStandardError = true; 
        proc.OutputDataReceived += (o, e) => runResults.Output.Append(e.Data).Append(Environment.NewLine); 
        proc.ErrorDataReceived += (o, e) => runResults.Output.Append(e.Data).Append(Environment.NewLine); 
        proc.Start(); 
        proc.BeginOutputReadLine();       
        proc.BeginErrorReadLine(); 
        proc.WaitForExit(); 
        runResults.ExitCode = proc.ExitCode; 
        logger.logInfo(String.Format("Application has started: {0}", application)); 
       } 
      } 
      else { 
     ... 
      } 
     } 
     catch (Exception e) { 
      ... 
     } 
     return new string[] { "Hello", "world", "jive", "turkeys" }; 
    } 

我可能沒有做正確的事情。 我知道你在想什麼......這是不安全的。這是一個內部應用程序,只能由正確的安全組中的人訪問。如果你不在,你不能調用這個控制器。此外,它將受到我稱之爲三角認證的保護。其中的細節除了這篇文章的重點之外。有任何想法嗎?

+0

任何思想先生?這似乎有點模糊了一個話題?也許沒有答案? – SoftwareSavant

回答

0

在這篇文章中,作者開發了一個windows服務,它具有完整的操作系統能力,沒有像web服務器那樣的安全限制,然後嵌入一個自己的主機web API以便與它通信,非常整潔的方法和乾淨,因爲有足夠的每個所用技術的隔離空間。希望它會回答你的問題 link

相關問題