我一直在寻找这个问题的答案,但是到目前为止我还没有看到任何答案。
我们正在考虑向现有的Windows Services / WPF EXE添加一些报告。理想情况下,我们会自行托管一个小的vNext应用程序,该应用程序将公开我们的应用程序可以使用的报告端点。这可以通过OWIN和ASP.NET 4实现。
vNext甚至可以实现这一点吗?
我已经尝试了一些样本等,而K Runtime似乎显然是与CLR不同的运行时。构建等也是完全不同的...所以我想至少它必须是一个完全独立的过程....或者我是在咆哮错误的树?
特别是我们似乎需要调用K运行时(k web或elsed ak pack'ed .cmd),因为我已经在我正在运行的进程(主要的exe / service)中,这似乎更直观。
编辑:我想知道答案是NoWin,引用并提供OWIN容器。我正在努力想知道这是不是最好的方法......
答案 0 :(得分:2)
这是一个可能的解决方案:How to Run DNX Applications in a Windows Service和 How to Host ASP.NET in a Windows Service感谢Erez Testiler。
基本上我的想法是添加以下引用:
然后以编程方式配置并启动Server和ASP.NET:
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Hosting.Internal;
using Microsoft.Framework.Configuration;
using Microsoft.Framework.Configuration.Memory;
using Microsoft.Framework.DependencyInjection;
using System;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
....
private readonly IServiceProvider _serviceProvider;
private IHostingEngine _hostingEngine;
private IDisposable _shutdownServerDisposable;
public Program(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
protected override void OnStart(string[] args)
{
var configSource = new MemoryConfigurationSource();
configSource.Add("server.urls", "http://localhost:5000");
var config = new ConfigurationBuilder(configSource).Build();
var builder = new WebHostBuilder(_serviceProvider, config);
builder.UseServer("Microsoft.AspNet.Server.Kestrel");
builder.UseServices(services => services.AddMvc());
builder.UseStartup(appBuilder =>
{
appBuilder.UseDefaultFiles();
appBuilder.UseStaticFiles();
appBuilder.UseMvc();
});
_hostingEngine = builder.Build();
_shutdownServerDisposable = _hostingEngine.Start();
}
这对我来说似乎是一个很好的解决方案。
答案 1 :(得分:0)
好的,我在jabbr.net上度过了一段时间,并从一个非常棒的@dfowl那里得到了一些帮助,还有一个很有帮助的,如果是相当简洁的年轻人(那些日子)。
@dfowl:那个场景已经死了
我认为我们的Windows服务/ WPF在CLR下运行,vNext在CLR下运行,它们是不同的运行时。
基于旧版本的K运行时, 是一种方法,而且它是毛茸茸的。文件可能,但从未投入生产: