以NET6为例:
1.首先需要在netcore项目上安装Microsoft.Extensions.Hosting.WindowsServices包:
2.在Program的Main方法中:
Host.CreateDefaultBuilder(args) .UseWindowsService()//启用Windows服务
3.发布程序,这里选择独立部署
4. 以管理员身份打开cmd.exe,输入以下代码创建Windows服务,AspNetCoreWindowsService为服务名可以随便命名,binPath为要生成的Windows服务的NETcore发布后程序的exe所在完整路径。
sc create AspNetCoreWindowsService binPath=E:\WebAppCore\bin\Release\net6.0\publish\WebAppCore.exe
执行成功后,会提示
[SC] CreateService 成功
如果想要删除该服务,首先需要在服务里关闭该服务,然后在cmd中输入:
sc delete AspNetCoreWindowsService
在实际处理中发现如果数据库连接用的是vs安装的自带的(LocalDB)\MSSQLLocalDB实例,安装成功的Windows服务运行后,网站可以正常运行,但是无法正常连接数据库,通过查看电脑的事件查看器,发现是无法正常连接到SqlServer数据库:
An unhandled exception has occurred while executing the request. Exception: Microsoft.Data.SqlClient.SqlException (0x80131904): Login failed for user 'sa'. at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
最后将数据库迁移到.也就是local实例上正常。