前后端分离项目(后端C#,前端Vue)在Windows通过IIS部署遇到的问题
后端:
1.Dotnet版本不对
文件的dotnot版本默认的是.NET 6.0,但是我的系统是.NET8.0,导致无法启动.
解决方法:尝试下载.NET6.0版本,但是下的不对,需要Microsoft.AspNetCore.App 6.0
把项目的.csproj 的配置从6.0改成8.0,能够启动
2.数据库连不上
数据库配置:
"ConnectionStrings": {
"conn_db_type": "0", //数据库类型 MySql = 0, SqlServer = 1
"conn_db": "Data Source=localhost;port=3306;User ID=root;Password=root;Database=device_cloud;CharSet=utf8;sslmode=none;Max Pool Size=70;Pooling=true;Connection Reset=false;Connect Timeout=25;",
"conn_db_device": "Data Source=localhost;port=3306;User ID=root;Password=root;Database=device_cloud;CharSet=utf8;sslmode=none;Max Pool Size=20;Pooling=true;Connection Reset=false;Connect Timeout=25;"
},
报错:
执行SQL出错:中文提示 : 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:Host '218.19.14.194' is not allowed to connect to this MySQL server.
English Message : Connection open error . Host '218.19.14.194' is not allowed to connect to this MySQL server
解决方法:
1.修改本地文件MySQL的my.ini文件,加了bind-address = 0.0.0.0, 以允许来自所有 IP 的连接.
2.配置MySQL用户权限:给root用户添加了
'root'@'218.19.14.194'
以及
'root'@'%'
两个主机记录,这意味着理论上您应该能够从IP地址
218.19.14.194
成功连接到MySQL服务器。
3.在防火墙里TCP端口3306的入站连接.
4.以上操作完成后要在命令行services.msc里重启MySQL服务.
解决方法:
改
appsetting.json
的数据库链接而不是部署的
appsettingdevelopment.json
.
3.端口是80,无法启动,权限不够
连接80端口需要高权限
解决方法:把配置文件里的接口换成没用过的接口(8888)
4.IIS AspNetCore Module V2报错
总共有三条,包含具体信息的一条:
Could not find 'aspnetcorev2_inprocess.dll'. Exception message:
解决方法:后端的应用程序池出了问题,正确配置如下,启动成功后可以通过192.168.50.3:8888成功访问后端.
前端:
前端同样用IIS部署,通过在web storm里或文件的cmd里执行npm run build,文件会保存到dist目录下,如下图所示:
把文件复制粘贴到服务器上,利用IIS部署,端口为8887.
1.利用ip访问会报错404
解决方法:IIS配置反向代理
需要下载两个IIS插件,一个是application request routing cache,在整个大的服务器主页里选择它,
点进去选择右侧的proxy的
勾选:
接下来配置网站的URL重写.首先要下载这个插件,
点进去之后
点击右侧的添加规则,选择反向代理,输入后端访问的路径(192.168.50.3:8888),点击确定.
2.反向代理有问题,报错400.605
解决方法:请求URL的模型改成^api/(.*)$,其他不变.
此时连上VPN后访问192.168.50.3:8887能够访问项目.
版权归原作者 Eudemon1a 所有, 如有侵权,请联系我们删除。