Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Windows服务中托管ASP.NET5 Web应用程序_C#_.net_Asp.net Core - Fatal编程技术网

C# 在Windows服务中托管ASP.NET5 Web应用程序

C# 在Windows服务中托管ASP.NET5 Web应用程序,c#,.net,asp.net-core,C#,.net,Asp.net Core,我有一个基于.NET Framework 4.5的现有Windows服务应用程序,希望添加一个用于配置和诊断的用户界面 在Windows窗体或WPF中,服务将通过TCP连接.NET远程处理或WCF将其数据发送到客户端,但这需要在客户端或服务器端进行额外的配置,还需要服务和客户端处于相同的兼容性级别,最坏的情况下,这意味着多个客户端可以提供多个服务 我有一个想法,就是使用新的ASP.NET5 Web应用程序将服务和用户界面融合到一个应用程序中。 当Windows服务启动时,首先我想启动web服务器

我有一个基于.NET Framework 4.5的现有Windows服务应用程序,希望添加一个用于配置和诊断的用户界面

在Windows窗体或WPF中,服务将通过TCP连接.NET远程处理或WCF将其数据发送到客户端,但这需要在客户端或服务器端进行额外的配置,还需要服务和客户端处于相同的兼容性级别,最坏的情况下,这意味着多个客户端可以提供多个服务

我有一个想法,就是使用新的ASP.NET5 Web应用程序将服务和用户界面融合到一个应用程序中。 当Windows服务启动时,首先我想启动web服务器,然后启动服务的其余部分。因此,用户可以在不安装任何附加软件的情况下与服务交互。 Web应用程序和Windows服务应在同一AppDomain中运行,以便我可以更改用户界面中的对象,并且服务可以立即使用它

到目前为止,我已经玩了一点新的控制台应用程序dnx451,并通过WebHostBuilder托管,得到了一个工作页面,但我不认为这是我正在寻找的解决方案。我得到项目输出和一个cmd文件来启动服务器

所以我的第一个问题是:是否有一个WebHostBuilder for.NET4.5的等效实现,用于在传统的VisualStudio项目中运行网站

我的第二个想法是在IIS中完全运行该服务,这样我就有了一个承载现有服务功能的网页。但我不知道IIS和as Windows服务中的应用程序之间有什么区别。 在这种情况下,ASP.NET4.6是什么?因为我认为我必须将现有库转换为新的ASP.NET5类库包

我能想到的最后一种可能是将web应用程序发布到IIS,并作为Windows服务提供服务,并通过WCF命名管道进行通信,就像我使用WPF或Windows窗体应用程序一样


总之,是否有任何计划支持我的第一个想法,或者我必须从其他想法中选择一个?哪个选项可能是最好的?

如果您希望您的服务可以从外部世界使用(我假设这是真的),我认为表单需要托管在ASP.NET中,在IIS服务中运行


然而,您不需要对现有库做任何事情;它们应该在新版本的框架中按原样运行。例如,我有一个针对2.0版构建的大量库,它们在4.5版中运行不变。我所知道的唯一一件可能会破坏你的功能的事情是,如果他们在新的框架中使用行为不同的函数。到目前为止,我的库中还没有出现类似的情况。

如果您希望您的服务可以从外部世界使用(我假设这是真的),我认为表单需要托管在ASP.NET中,在IIS服务中运行


然而,您不需要对现有库做任何事情;它们应该在新版本的框架中按原样运行。例如,我有一个针对2.0版构建的大量库,它们在4.5版中运行不变。我所知道的唯一一件可能会破坏你的功能的事情是,如果他们在新的框架中使用行为不同的函数。到目前为止,我的库中还没有出现类似的情况。

对于.NET 4.5,您的选项是或,两者都运行在。不幸的是,您不能自行主持MVC5


对于ASP.NET 5 w/MVC 6,由于它查看了MVC6 nuget包中的依赖项,它们只获得了对DNX和DNXCore的引用,并且没有针对DNX的windows服务引导程序。另外,还没有将.NET 4.6部署到生产环境。

对于.NET 4.5,您的选项是或,两者都运行在。不幸的是,您不能自行主持MVC5


对于ASP.NET 5 w/MVC 6,由于它查看了MVC6 nuget包中的依赖项,它们只获得了对DNX和DNXCore的引用,并且没有针对DNX的windows服务引导程序。另外,还没有将.NET 4.6部署到生产环境。

您可以使用DNX451而不是DNX Core运行ASP.NET 5和.NET 4.5.1,并使用Windows服务将其托管。我在这里写了一篇文章,介绍了如何做到这一点:

您可以使用DNX451而不是DNX Core运行ASP.NET 5和.NET 4.5.1,并使用Windows服务托管它。我在这里写了一篇如何做到这一点的文章: