首页 文章 精选 留言 我的

精选列表

搜索[asp.net],共1052篇文章
优秀的个人博客,低调大师

ASP.NET Core Web程序托管到Windows 服务

前言在 .NET Core 3.1和WorkerServices构建Windows服务 我们也看到了,如何将workerservices构建成服务,那么本篇文章我们再来看看如何将web应用程序托管到我们的服务中.将WEB应用作为服务运行我们需要将我们的WEB应用程序编译成exe文件,在ASP.NETCore中其实这是一个很简单的过程,我们只需要修改.csproj即可。正如下面代码片段 <TargetFramework>netcoreapp3.1</TargetFramework> <OutputType>Exe</OutputType> 我们只需要添加OutputType即可.接着来我们需要安装Microsoft.Extensions.Hosting.WindowsServices到我们的WEB应用程序中,如下所示:Install-Package Microsoft.Extensions.Hosting.WindowsServices现在我们需要在Program.cs中的CreateDefaultBuilder方法中进行扩展UseWindowsService public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }).UseWindowsService(); } 上述代码中我们已经操作完了....部署服务我们还需要做的是部署到我们的服务中.以管理员身份打开命令提示符,然后在项目文件夹中运行以下命令以发布项目:dotnet publish -c Release接下来,我们可以使用标准Windows服务命令将exe作为服务安装。因此,将命令提示符移动到输出文件夹(可能沿着myprojectbinReleasenetcoreapp3.1publish)。并运行类似的内容以作为服务安装:sc create ASPNETCoreWindowsService binPath=ASPNETCoreWindowsService.exe当然我们也可以停止和删除该服务sc.exe stop ASPNETCoreWindowsService sc.exe delete ASPNETCoreWindowsService 独立部署将Web App作为Windows服务运行的全部原因是,我们不必在计算机上安装其他工具。但这只有在我们进行所谓的独立部署时才有效。这意味着我们将应用程序所需的一切部署在发布文件夹中,而不必在目标计算机上安装.NET Core运行时。我们需要做的就是运行我们的dotnet release命令,其中包含一些额外的标志:dotnet publish -c Release -r win-x64 --self-contained这告诉.NET Core SDK我们要以独立形式发布,并且适用于Windows。您的输出路径将从binReleasenetcoreapp3.0publish 更改为binRelease netcoreapp3.0win-x64publish您还将注意到此新输出目录中的大量文件以及该文件夹的一般大小。但是,考虑到这一点,是的,我们正在部署整个运行时,因此它应该很大。Content Root我快速浏览了UseWindowsService的调用在此处的实际源代码。我注意到的是,它专门为在Windows Service下运行的内容设置了根目录。我想知道如果以Windows服务运行时从应用程序内的磁盘读取本地文件怎么办?通常我只会写类似:File.ReadAllText("myfile.json");但是……显然,在WindowsService上下文中运行时有一些特殊之处。所以我尝试了一下,我的程序异常了。我不得不检查机器上的事件查看器,发现:Exception Info: System.IO.FileNotFoundException: Could not find file 'C:WINDOWSsystem32myfile.json'.因此,当作为Windows服务运行时,我的应用程序的"根"认为它位于System32内。再次查看Microsoft的源代码可以找到解决方案。我可以简单地使用它们设置内容根目录的相同方法,以从正确的位置加载我的文件:File.ReadAllText(Path.Combine(AppContext.BaseDirectory, "myfile.json"));Referencehttps://github.com/hueifeng/BlogSample/tree/master/src/ASPNETCoreWindowsServicehttps://dotnetcoretutorials.com/2019/12/21/hosting-an-asp-net-core-web-app-as-a-windows-service-in-net-core-3/

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册