更新 - 2016 年 7 月 26 日
我已在下面的答案中的 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 应用程序执行此操作?
最佳答案
您可以将 DNX 应用程序作为 Windows 服务运行,但是不能直接运行 CMD 文件。您将收到一条错误消息,内容如下:“服务未及时响应启动或控制请求。”您可以直接指向 dnx.exe 并将项目文件夹和命令作为参数传递。
阅读这篇文章了解更多详细信息:http://taskmatics.com/blog/run-dnx-applications-windows-service/
设置好应用程序后。您可以从服务的 OnStart 方法引导 ASP.NET。为此,您可以使用 Microsoft.AspNet.Hosting 中的 WebHostBuilder。
最后,您可以通过向 Main 方法传递一个参数(例如“非服务”)来确保应用程序在 VS 中仍然可运行,并在调用 ServiceBase.Run 之前进行检查,如果存在,您可以直接调用 OnStart反而。项目的属性使您可以选择在 VS 中运行时传递参数。
更新:
还有一篇以上述文章为基础的后续文章。它展示了如何在 Windows 服务中运行带有静态文件的 ASP.NET 5 和 MVC 6。链接在这里:http://taskmatics.com/blog/host-asp-net-in-a-windows-service/
关于asp.net-core - MVC 6 安装为 Windows 服务 (ASP.NET Core 1.0.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30277991/