在Windows服务中托管 ASP.NET Core的坑

按照官网教程

https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-2.1&tabs=aspnetcore2x

复制官方DEMO代码

https://github.com/aspnet/Docs/tree/master/aspnetcore/host-and-deploy/windows-service/sample

创建Asp.Net Core MVC项目。以release发布到d:\svc。

然后打开PowerShell,输入命令,报错

分享图片

sc create MyService binPath="D:\svc\MvcService.exe"

Set-Content : 找不到接受实际参数“binPath=D:\svc\MvcService.exe”的位置形式参数。

所在位置 行:1 字符: 1

+ sc create MyService binPath="D:\svc\MvcService.exe"

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : InvalidArgument: (:) [Set-Content],ParameterBindingException

    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetContentCommand

觉得匪夷所思,命令跟官网一模一样,怎么就不对呢?各种折腾都搞不定。

考虑到官网用的工具是传统的命令提示符,所以换一下。最新版的Win10,右键点击开始菜单,已经没有命令提示符。左键点开始菜单键盘打cmd,可以找到命令提示符工具,此时还要用右键,以管理员身份运行,非常麻烦。

分享图片

然而竟然成功安装了服务!

分享图片

访问http://localhost:5000可以看到网页。

真是无语了,我一直认为PowerShell就是CMD的升级版,向前兼容的,没想到还有这种坑。

 

最后用sc delete MyService删除服务,发现服务还在,只是停止和禁用了。也不知道对不对。

相关文章

本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从...
基于 .NET 的一个全新的、好用的 PHP SDK + Runtime: Pe...
.NET 异步工作原理介绍。
引子 .NET 6 开始初步引入 PGO。PGO 即 Profile Guided Opti...
前言 2021/4/8 .NET 6 Preview 3 发布,这个版本的改进大多来...
前言 开头防杠:.NET 的基础库、语言、运行时团队从来都是相...