.net打开exe程序,本地调试时打开没问题,但是在IIS发布后,打不开,进程中有ax.exe的进程

.net打开exe程序,本地调试时打开没问题,但是在IIS发布后,打不开,进程中有ax.exe的进程,第1张

因为从winxp开始,windows是一个多用户的os因此iis即使指定了对应的用户,也无法在特定的用户界面上显出对应的程序,只会以 进程的形式出现

至于你调试的时候可以 ,那是因为调试的时候,是以你当前的用户作为执行用户的,因此可以正常显示,但是发布以后就是另一个用户(即使是一个用户名,如果你有非常丰富的远程经验,应该遇到过类似的情况,即一个用户被多次登录)

如果你一定要实现,只有两个办法:

换成win2000  搭载iis5

写一个守护程序 或者 windows service,web app请求守护程序,由守护进程去执行打开对应的应用程序

使用VS创建一个WebApi项目:

发布后生成的文件

1.如果已经安装了其他的 *** 作系统,可以重新更换 *** 作系统。

自定义的密码就是后面用远程工具进行连接的,登录密码和登录名。

安装组其实就是用来放行端口的。通俗来说就是管大门的。具体的可以参考这个文章:: 阿里云安全组详细解说

宝塔可以让你通过浏览器可视化 *** 作云服务器,允许你在一定程度上可以像使用windows一样使用Ubuntu系统

直接去微软官网查找,对应版本上的dotnet运行环境相关 *** 作,此处的连接 在unbuntu上安装.net core 。直接在Xshell执行相应的命令行,复制粘贴就可以了。具体 *** 作如下

1.使用 APT 进行安装可通过几个命令来完成。 安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加包存储库。在终端中,运行以下命令:

.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:

sudo apt-get update

sudo apt-get install -y apt-transport-https &&

sudo apt-get update &&

sudo apt-get install -y dotnet-sdk-3.1

4.可以执行下边的命令,来运行一下试试,如果安装成功,会有反应,如果没有安装上,会提示错误

使用实例名称与密码将 WinScp 连接到云服务器,连接成功后,进入home 目录,普通用户都是在home 目录下进行 *** 作,一般你也可以建立一个自己的文件夹,把东西都放在同一个文件夹里,我这里创建了demo文件夹。将左侧本地文件直接拖拽到右侧的demo文件夹中,就可完成文件上传到云服务器。

在项目文件目录下运行下面命令:

发现 http://<云服务器公网IP>:<端口号>在浏览器根本打不开网页,于是

查看端口5000是否正常

发现5000端口,只对本地127.0.0.1有效,当然我们客户端没法访问了,此时有两种方法可以云解决

登录到宝塔,进入管理页面

此时再进行第五步,运行起项目,使用Nginx配置的端口80,就可以在浏览器中访问到了。

完成上面步骤后,虽然可以访问了,但当Xshell关闭后,就不可以访问了。这是因为Xshell启动的项目是前台进程,我们需要让项目启动变动后台进程。

守护进程是安装一个类似于Windows Service一样的服务, 能实时监控程序状态,异常退出时能自动重启。Supervisor 是用Python开发的Linux/Unix系统下的一个进程管理工具。它可以使进程(类似Windows Service)脱离终端,变为后台守护进程(daemon)。能实时监控进程状态,异常退出时能自动重启。详细文档请查看官网。配置守护进程Supervisor, 让我们的程序能365天24小时不间断运行。

安装成功后,supervisor就会默认启动,有很多方法添加进程,看了很多博客上的介绍和加上我的实际使用,我认为一下方法最好用,将每个进程的配置文件单独拆分,放在/etc/supervisor/conf.d/目录下,以.conf作为扩展名,例如dotnetdemo.conf定义的一个简单的HTTP服务器

到此,就可以长久正常访问项目接口了。

supervisorctl 使用说明

supervisor启动和停止的日志文件存放在/var/log/supervisor/supervisord.log

注意:显式用stop停止掉的进程,用reload或者update都不会自动重启

1.首先在linux中安装Net6.0运行时,安装5.0只需要降6.0替换为5.0

添加仓储指令

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

执行安装命令:

a.如果不需要在linux上编译源码

sudo yum install dotnet-runtime-6.0

b.如果需要在linux上编译源码

sudo yum install dotnet-sdk-6.0

c.如果是有webapi接口或者网页

sudo install aspnetcore-runtime-6.0

安装完成后输入指令

dotnet --info 查看是否安装正确

2.发布net6.0程序

a.直接vs上面右键项目发布,选择文件夹发布,然后一路下一步。

b.上一步是生成了发布配置文件,此时界面会出现一个发布按钮,点击后才是真正发布

3.将2发布的文件全部复制到linux目录/home/dotnetuser/下。

此处我是创建了一个dotnetuser用户,然后自动生成的dotnetuser文件夹,其实不用创建用户也可以。

创建用户指令

sudo useradd -s /sbin/nologin dotnetuser

删除用户指令-r参数表示删除相关联的文件夹等

sudo userdel -r dotnetuser

4.测试一下程序是否能够运行,假设我们的程序名称为 DEmo.dll

进入/home/dotnetuser/

cd /home/dotnetuser/

输入指令(注意大小写,linux大小写敏感,此处我故意使用了DEmo)

dotnet DEmo.dll

运行正常就可以进行下一步,配置守护程序。

5.使用systemd守护程序,保证每次系统启动自动启动服务

在目录/home/dotnetuser/(不一定非得此目录)下创建文件demoService

文件内容如下

[Unit]

Description=demoservice

[Service]

ExecStart=dotnet /home/dotnetuser/DEmo.dll

ExecStart=/home/dotnetuser/

User=dotnetuser

Group=dotnetuser

Restart=on-failure

SyslogIdentifier=demoservice

PrivateTmp=true

[Install]

WantedBy=multi-user.target

此处特别注意:

在net5.0中这样就行:ExecStart=dotnet /home/dotnetuser/DEmo.dll

在net6.0中得输入全路径:ExecStart=/usr/share/dotnet/dotnet /home/dotnetuser/DEmo.dll

ExecStart=  ExecStart= User= Group=这几项根据实际情况填写

在demoService文件所在同一目录(此处是/home/dotnetuser/)输入指令完成配置

systemctl enable /home/dotnetuser/demoService

6.查看程序是否运行正常active绿色正常,其他未正常运行

查看服务状态指令

systemctl status demoService

7.其他指令

停止服务指令

systemctl stop demoService

开始服务指令

systemctl start demoService


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11309754.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存