asp.net-core - MVC 6 安装为 Windows 服务 (ASP.NET Core 1.0.0)

标签 asp.net-core asp.net-core-mvc dnx

更新 - 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/

相关文章:

azure - Kestrel 运行哪个框架?

asp.net-mvc - 正确设置 IIS Express SSL 证书以开发 .net 核心 mvc 应用程序

c# - HTTP 错误 500.32 - 将独立的 .Net Core 3.1 应用程序部署到 Azure 后,ANCM 无法加载 dll

nhibernate - ASP.NET 5 NHibernate session 需要 System.Data.IDbConnection?

javascript - Visual Studio Mac appsettings.json 允许不显眼的 javascript

c# - aspnet 5 RESTful api ModelState.IsValid == true 即使值根据 DataAnnotations 无效

c# - ASP.NET Core 3.1 MVC 如何让用户在注册时选择自己的角色?

c# - dotnet 核心方法 'ValidateOptions' ... 没有实现

release - 微软Asp.net 5 DNX运行时版本仍处于测试阶段?

asp.net - dnx 红隼 "System.EntryPointNotFoundException: uv_loop_size"