JDT*_*LH9 17 asp.net-core-mvc dnx asp.net-core
更新 - 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"
}
Run Code Online (Sandbox Code Playgroud)
当我发布这个时,我可以运行web.cmd文件并在控制台窗口中运行该站点.大!
但是在OWIN中,您可以使用TopShelf从控制台应用程序启动您的Web应用程序.然后,可以将其构建为可执行文件并作为Windows服务安装.
有没有办法使用ASP.NET 5 MVC 6 Web应用程序执行此操作?
Ere*_*z T 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/
从最新的ASP.NET Core Version 1.0.0库开始,现在有些简化了.
ASP.NET GitHub页面上有关于此主题的公开讨论.
所有ASP.NET核心应用程序现在都是控制台应用程序,并且有一个新的主机库作为在完整.NET框架上运行的Windows服务(这有意义,因为整个问题假定是Windows Web服务器).
我们需要创造一个新的 ASP.NET Core Web Application (.NET Framework)
检查project.json文件以确保"框架"部分如下所示:
"frameworks": {
"net461": {}
},
Run Code Online (Sandbox Code Playgroud)
我们需要添加服务托管库Microsoft.AspNetCore.Hosting.WindowsServices并保存project.json以恢复包.
然后,我们需要编辑program.cs文件并添加在调试中运行并作为服务运行的路径,其代码如下:
public static void Main(string[] args)
{
var isDebug = Debugger.IsAttached || ((IList)args).Contains("--debug");
string runPath;
if (isDebug)
runPath = Directory.GetCurrentDirectory();
else
{
var exePath = Process.GetCurrentProcess().MainModule.FileName;
runPath = Path.GetDirectoryName(exePath);
}
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(runPath)
.UseStartup<Startup>()
.Build();
if (isDebug)
host.Run();
else
host.RunAsService();
}
Run Code Online (Sandbox Code Playgroud)
该.RunAsService()方法是Microsoft.AspNetCore.Hosting.WindowsServiceslib 提供的扩展方法.
要作为服务安装,只需从管理员命令提示符运行以下命令:
SC Create <service-name> binPath= "[PublishOutputPath]\mvc6-example.exe"
Run Code Online (Sandbox Code Playgroud)
请克隆并查看我的GitHub存储库上的工作版本.
我希望这有帮助 :)
更新:似乎将有一个Windows服务托管选项进入RC2.有关更多信息和此答案,请参阅此GitHub评论.
我担心答案是否定的.我一直在研究这个问题,最好的方法是将项目部署到磁盘上的已知位置,并使用Windows服务来启动调用cmd文件的进程.这样,Windows服务只会充当监视器.
我希望得到一些博客文章和样本,因为我在部署方面一直在研究这个问题.这里还有一个公开的讨论:https://github.com/aspnet/Home/issues/465
| 归档时间: |
|
| 查看次数: |
5119 次 |
| 最近记录: |