最近部署wtm研发的考试系统,系统在线下机房部署。运气不好的是对方给提供WindowsServer2016操作系统居然是盗版系统,IIS无法正常部署wtm应用。
为了解决这一问题,初期想到的方案就是使用批处理方式用命令启动,刚开始还好好的。结果服务器内别人又部署了一套系统,没事就顺手关了控制台,要么就是机房的管理员没事就关机。没办法,看了看微软的文档,决定采用Windows服务的方式来部署。
一、Bat方式启动
这种方式的原理,实际上就是分步骤执行两个cmd命令,其中一个是dotnet cli
@echo off
start cmd /k "cd /d D:/dqkks && dotnet TXKS.dll urls=http://*:8585"
cd /d D:/dqkks 转到目标文件夹
dotnet TXKS.dll urls=http://*:8585 启动.NET Core web程序 端口为8585
二、发布为Windows服务
1、安装Microsoft.Extensions.Hosting.WindowsServices 包
2、wtm项目中打开 Program.cs文件
添加2句代码即可
using System.Collections.Generic;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using WalkingTec.Mvvm.Core;
namespace TXKS
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateWebHostBuilder(string[] args)
{
return
Host.CreateDefaultBuilder(args)
.UseWindowsService()//为Host增加UseWindowsServices方法
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddInMemoryCollection(new Dictionary<string, string> { { "HostRoot", hostingContext.HostingEnvironment.ContentRootPath } });
})
.ConfigureLogging((hostingContext, logging) =>
{
logging.ClearProviders();
logging.AddConsole();
logging.AddWTMLogger();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseUrls("http://*:8087", "http://*:8088");//使用UseUrls方法指定ASP.NET Core应用程序启动后使用的端口号和协议(http、https)。
webBuilder.UseStartup<Startup>();
});
}
}
}
3、正常发布项目 默认配置即可
4、测试web项目exe是否能正常运行
在服务器 找到项目目录 双击 TXKS.exe TXKS是你项目名称
如果正常运行则进行服务发布,如果不行就检查问题。最可能出现的问题,一般都是SDK没有安装或者数据库连接字符串配置的问题。
5、安装服务
这里我们采用命令安装
sc create AspNetCoreWindowsService binPath=C:\Publish\AspNetCore\TXKS.exe
AspNetCoreWindowsService 是你目标的服务器名称
binPath就是项目的启动的exe目标文件 一定要填对
6、服务卸载
sc delete AspNetCoreWindowsService
三、项目访问
采用Windows服务方式部署,一般测试的时候或者命令安装服务器就会弹出防火墙端口开放提醒,如果没有则使用防火墙高级设置打开项目使用端口。
访问采用Ip:Port的方式就可以正常访问。
参照文章:如何把ASP.NET Core应用程序做成为Windows Service服务(转载)https://www.cnblogs.com/OpenCoder/p/14637085.html