.net core部署到windows服务上的完整步骤

所属分类: 网络编程 / ASP.NET 阅读数: 1707
收藏 0 赞 0 分享

前言

Net core 项目部门在Windows有很多种方式,大致有以下几种,

  1. dotnet 命令,
  2. iis(windowshosts),
  3. 一些开源的应用容器(docker )
  4. 基于一些exe 程序,微软官网上案例
  5. Nssm 搭建windows服务

其中优劣对比在这不进行累述。我今天是把它搭建到windows服务上的,这种方式对于我们现有dotnet来说相对美观(一个黑框框,一个看不到),电脑重启可以自动重启。

1.实现

1.1.下载nssm

官网http://www.nssm.cc/,下载地址http://www.nssm.cc/download

1.2.搭建windows 服务 

找到文件夹下建立的Install.bat 点击运行弹出操作窗体。

Install.bat内容:

%~d0
cd %~dp0
nssm install NPSWebCoreService
PAUSE

Path:选择系统运行bat----C:\Nps\CoreWeb\1run.bat

ps:因为我们系统中要特殊处理所以直接执行了bat。此内容正常是填写C:\Program Files\dotnet\dotnet.exe. 因为要执行dotnet命令,我这些操作实在bat中执行的。

Startup directory:bat 所在目录不用改变;

ps:发布项目文件夹的地址。

Arguments:为空;

ps:项目运行dll:

Service name:我写在install.bat 批处理里面了,不要改变,因为代码中重启服务我这是写死的。。

ps:创建线管名称即可,即windows 服务名称。

然后点击Install service按钮就完成了部署。

注:红色字体为是一般处理方式,非红色是我们系统中处理的方式

1.2.3 启动服务

让后输入网站就可以访问了

3. Nssm

3.1.输入nssm 了解其命令行

3.2.官网http://www.nssm.cc/usage

4. 针对与咱们系统的问题的处理方案 

4.1. 日志问题,nssm 中path 文件运行bat 不要运行dotnet.exe. Log4net 配置问题。

4.2. Office 转换pdf 问题,windows servers 2008 服务器缺少com组件缺少窗口,我在程序中增加了相关代码,如果没有权限请手动创建(服务器2008 r2 ,2016都能创建)

System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Office Excel 不能访问文件“D:\Benz\Daimler\Benz.Win\LSHBizPlanFigure.xls”。 可能的原因有:

? 文件名称或路径不存在。
? 文件正被其他程序使用。
? 您正要保存的工作簿与当前打开的工作簿同名。

此问题的出现 我十分不解。

解决方案 也十分疑惑

This solution is ...

?Windows 2008 Server x64
Please make this folder.

C:\Windows\SysWOW64\config\systemprofile\Desktop

?Windows 2008 Server x86

Please make this folder.

C:\Windows\System32\config\systemprofile\Desktop

...instead of dcomcnfg.exe.

This operation took away office automation problems in my system.

A Desktop folder seems to be necessary in the systemprofile folder to open file by Excel.

It disappears from Windows2008, Windows2003 had the folder,
and I think it cause this error.

即在C:\Windows\System32\config\systemprofile和C:\Windows\SysWOW64\config\systemprofile目录下创建名为Desktop目录即可解决问题

该方法确实解决了我的问题

4.3.数据库备份重启服务问题,改为重启windows服务,所以请用上面的install.bat运行不要,改变Service name。

重启服务代码:

try
 {
 ServiceController service = new ServiceController("NPSWebCoreService");
 if (service.Status == ServiceControllerStatus.Running)
 {
 service.Stop();
 service.WaitForStatus(ServiceControllerStatus.Stopped);
 }
 service.Start();
 service.WaitForStatus(ServiceControllerStatus.Running);
 }
 catch (Exception){}

4.4.netcoreweb要基于mysql 服务问题,担心再启服务器的时候,mysql和windows 服务启动顺序的问题,我在启动bat 中怎么了判断mysql服务是否启动的判断。

bat 内容:

@echo off

SETLOCAL enabledelayedexpansion
rem 关闭自动输出
:begin

for /f "skip=3 tokens=4" %%i in ('sc query MySQL') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (
 echo 已经发现该服务在运行。
) else (
 net start MySQL80
 echo 已经发现该服务在运行1。
)

rem 接收输入
rem 输出得到的输入信息
echo 启动NPSWebCore

dotnet ./NPSWebCore.dll

@echo 启动结束
exit

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

更多精彩内容其他人还在看

.NET Core源码解析配置文件及依赖注入

这篇文章我们设计了一些复杂的概念,因为要对ASP.NET Core的启动及运行原理、配置文件的加载过程进行分析,依赖注入,控制反转等概念的讲解等
收藏 0 赞 0 分享

.NET Corek中Git的常用命令及实战演练

这篇文章将通过故事的形式从Git的历史谈起,并讲述Git的强大之处。然后通过实战演练教你如何在Github以及码云上托管我们的代码并进行代码的版本控制
收藏 0 赞 0 分享

Asp.Net Core WebAPI使用Swagger时API隐藏和分组详解

这篇文章主要给大家介绍了关于Asp.Net Core WebAPI使用Swagger时API隐藏和分组的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Asp.Net Core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

如何利用FluentMigrator实现数据库迁移

这篇文章主要给大家介绍了关于如何利用FluentMigrator实现数据库迁移的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

ASP.NET Core利用Jaeger实现分布式追踪详解

这篇文章主要给大家介绍了关于ASP.NET Core利用Jaeger实现分布式追踪的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用ASP.NET Core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

浅谈从ASP.NET Core2.2到3.0你可能会遇到这些问题

这篇文章主要介绍了ASP.NET Core2.2到3.0可能会遇到的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解.net core webapi 前后端开发分离后的配置和部署

这篇文章主要介绍了.net core webapi 前后端开发分离后的配置和部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解ASP.Net Core 中如何借助CSRedis实现一个安全高效的分布式锁

这篇文章主要介绍了ASP.Net Core 中如何借助CSRedis实现一个安全高效的分布式锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

.net 4.5部署到docker容器的完整步骤

这篇文章主要给大家介绍了关于.net 4.5部署到docker容器的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用.net4.5具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

.net core并发下线程安全问题详解

这篇文章主要给大家介绍了关于.net core并发下线程安全问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用.net core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享
查看更多