- 締切済み
webサーバ上でEXEを起動するには?
Visual Studio 2005でC#を使いWEBアプリ制作中です。 制作したWEBアプリが時々おかしくなり、WWWサービスを再起動すると元通りに直ります。 おかしな動作をするときはtry catchで検出できていますので catchの中でWWWサービスを再起動させようと思い下記を実行しましたが、再起動しません。 prog.StartInfo.FileName = "NET"; prog.StartInfo.Arguments = "STOP W3SVC"; prog.Start(); prog.StartInfo.FileName = "NET"; prog.StartInfo.Arguments = "START W3SVC"; prog.Start(); Windowsアプリではこれで再起動します。 Webアプリは何か方法があるのでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- onos
- ベストアンサー率81% (127/155)
んー、本来はなぜ問題がでるか、をきちんと調べるべきでしょうが。 WWWサービスまでいかずに、Webアプリとしての再起動でクリアできるのであれば、実行時ユーザーに権限与えたうえでweb.config書き換えるとか、もうちょっと影響あたえない範囲でWebアプリが再起動するレベルのファイル書き換えしてみるのもひとつの手かも。 あと、IISの設定で毎晩アプリケーションプールのリサイクル実行するとか。。。
- shockatz
- ベストアンサー率80% (153/191)
さすがに通常の実行権限(IUSRやNetworkService)でサービスプロセスを停止させるのは無理かと。 それができると、セキュリティ的に神も仏もないよね。 解決策は。。利用者権限をAdmini権限に偽装するか、確実なのは管理者権限で動作するWindowsサービスを別に作って、WCF経由でリモートオブジェクトとして実行すれば。 (Webサーバ側をクライアントとして動作させる) どうしてもWebから外部のリソースを操作する必要があるとき、使う方法です。 .NET Framework4とIIS7.5にすると、プロセス保護が強力になって、WWW再起動といった最悪の手段は防げると思うのですが。。I/Oとかからんでるとやっぱり難しいかな。