MVC 6如何作为Windows服务安装(ASP.NET Core 1.0.0)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (77)

ASP.NET Core 1.0.0在下面的答案中添加了解决方案。

我创建了一个简单的MVC 6应用程序,并且包含了Microsoft.AspNet.WebListener库,因此我可以在IIS之外进行托管。

从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应用程序?

提问于
用户回答回答于

似乎将有一个Windows服务托管选项与RC2进来。看到这个GitHub评论更多信息。

恐怕答案是否定的。我一直在研究这一点,最好的办法是将你的项目部署到磁盘上已知的位置,并且有一个Windows服务来启动调用cmd文件的进程。这样,Windows服务将仅充当监督者。

我希望能够得到一些关于这方面的博文和样本,因为我一直在调查这方面的部署。这里也有一个公开的讨论:https//github.com/aspnet/Home/issues/465

用户回答回答于

可以将DNX应用程序作为Windows服务运行,但是,无法直接运行CMD文件。会收到错误消息,内容如下:“该服务没有及时响应启动或控制请求。” 可以直接指向dnx.exe并传递项目文件夹和命令作为参数。

阅读这篇文章了解更多细节:http : //taskmatics.com/blog/run-dnx-applications-windows-service/

一旦你有你的应用程序设置。可以从服务的OnStart方法引导ASP.NET。要做到这一点,你可以使用Microsoft.AspNet.Hosting的WebHostBuilder。

最后,通过向Main方法传递一个参数(如'non-service')并确保在调用ServiceBase.Run之前,如果存在,可以直接调用OnStart来确保应用程序仍然可以在VS中运行。项目的属性提供了在VS中运行时传递参数的选项。

有一个后续的帖子建立在上面的一个。它演示了如何在Windows服务中使用静态文件和MVC 6运行ASP.NET 5。链接在这里:http : //taskmatics.com/blog/host-asp-net-in-a-windows-service/

扫码关注云+社区