17

更新 - 2016 年 7 月 26 日

ASP.NET Core 1.0.0以下の回答に、これに対する解決策を追加しました。


簡単な MVC 6 アプリを作成し、IIS の外部でホストできるように Microsoft.AspNet.WebListener ライブラリを含めました。

project.json から:

"dependencies": {
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta4",
    "Microsoft.AspNet.Mvc": "6.0.0-beta4"
},

"commands": {
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000"
}

これを公開すると、web.cmd ファイルを実行して、コンソール ウィンドウでサイトを実行できます。すごい!

ただし、OWIN では、TopShelf を使用して、コンソール アプリケーションから Web アプリを起動できます。これを実行可能ファイルとしてビルドし、Windows サービスとしてインストールできます。

ASP.NET 5 MVC 6 Web アプリでこれを行う方法はありますか?

4

4 に答える 4

10

DNX アプリを Windows サービスとして実行できますが、CMD ファイルを直接実行することはできません。次のようなエラーが表示されます:「サービスは開始または制御要求にタイムリーに応答しませんでした。」dnx.exe を直接指定して、プロジェクト フォルダーとコマンドを引数として渡すことができます。

詳細については、この投稿をお読みください: http://taskmatics.com/blog/run-dnx-applications-windows-service/

アプリの設定が完了したら。サービスの OnStart メソッドから ASP.NET をブートストラップできます。これを行うには、Microsoft.AspNet.Hosting の WebHostBuilder を使用できます。

最後に、引数 (「非サービス」など) を Main メソッドに渡し、ServiceBase.Run を呼び出す前にそれを確認することで、アプリが VS で引き続き実行可能であることを確認できます。存在する場合は、代わりに OnStart を直接呼び出すことができます。プロジェクトのプロパティは、VS で実行するときに引数を渡すオプションを提供します。

アップデート:

上記の投稿に基づいたフォローアップ投稿があります。Windows サービスで静的ファイルと MVC 6 を使用して ASP.NET 5 を実行する方法を示します。リンクはこちら: http://taskmatics.com/blog/host-asp-net-in-a-windows-service/

于 2015-08-14T13:32:19.373 に答える
5

更新: RC2 に付属する Windows サービス ホスティング オプションがあるようです。詳細とこの回答については、この GitHub コメントを参照してください。

残念ながら、答えはノーです。私もこれを調査しており、これを行うための最良の方法は、プロジェクトをディスク上の既知の場所に展開し、cmd ファイルを呼び出すプロセスをスピンアップする Windows サービスを用意することです。このように、Windows サービスはウォッチドッグとしてのみ機能します。

展開の観点からこれを検討しているので、これに関するいくつかのブログ投稿とサンプルを取得したいと考えています。ここにも公開討論があります: https://github.com/aspnet/Home/issues/465

于 2015-05-16T19:25:11.193 に答える