質問: new System.Diagnostics.Process(); cmd.Start("Logger.exe"); ``` Does the process automatically ends or do I have to set a timeout and explicitly close it? Is it "safe" in a web application environment with different users accessing the web application let them call the executable without the risk of concurring accesses? Thanks. 編集: ヒントのために、より明確にするために組み込みのクラスを使用するように変更されました。
回答: 限り、メカニックとして、私はCommandLineProcessがプロセスをラップすると仮定しますか?もしそうなら、一見すると、それに必ずしも間違っていることはありません。私は、Webアプリケーションから実行可能ファイルとして実行することにいくつかの問題があります。開発者よりもセキュリティを低下させる可能性が高いからです(開発で見られる通常の方法に従えば)。 実際のビジネスコードをクラスライブラリにカプセル化する場合は、Webアプリケーションでコードを実行できます。主なルールは、セキュリティを低下させる必要がないように、保存するフォルダがWebルート(物理的または論理的)の下にあることです。しかし、ロジックがカプセル化されている場合は、プロセスをスピンアップすることなく、Webプロセスで「ファイルクリーナー」を実行できます。 あなたの他のオプションは、サービスにプロセスをラップすることです(私は非HTTP WCFサービスが好きですが、必要に応じてWindowsサービスに行くことができます)。サービスのエンドポイントでSOAパスをたどることが理にかなっている場合は、この方向に進むしかありません。これは単一のアプリケーションに分離されている可能性が高いため、プロセス内では意味があります(Webroot以外のディレクトリに保存しない限り)。 これが理にかなってほしい。