netcore的项目不像netFramework那么方便部署到iis还是要费点功夫的
比如我想把这个netcore2.1的项目部署到iis并运行:
按照步骤走:
一、确认自己的netcore环境
1、需要安装下面3个环境包(如果电脑已安装请忽略)
检查是否安装cmd命令:cmd:dotnet --info
或者直接去控制面板的程序查看,一般这四个是挨在一起的(安装后这里会显示四个)
如果没有安装请去官网下载自己项目对应的相应版本
地址:.NET Downloads (Linux, macOS, and Windows) (microsoft.com)
我是2.1点进去然后进入下页
这三个都要点击下载并安装。(注意:sdk与另外两个包的版本号是不一致的,这个没事,
安装很简单傻瓜式安装即可)
第一个是netcore运行时、第二个是netcore的iis的托管捆绑包、第三个是netcore的sdk
二、发布netcore并部署iis
1、选择文件夹发布,添加完发布配置直接发布即可
2、然后添加iis站点
3、添加站点之后查看模块
打开模块看到是否有:AspNetCoreModule,这个东西是安装了托管捆绑包之后才会有,没有不行说明第一步的环境没有装好。
如果打开模块报错,如:
说明你的web.config 的格式报错。请按照下面配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\Urs.Shop.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</location>
</configuration>
arguments 是项目启动站点的dll文件
stdoutLogEnabled 是否生成日志
stdoutLogFile 生成日志的地址,需要注意的是,logs的文件夹需要手动创建!!!
4、添加完之后应用程序池修改为无托管代码!
5、就可以浏览程序了
可能会出现程序的错,那么检查你的程序是否报错,一般是去输出的logs查看日志。
我这是报了个mysql的异常,因为我服务器上还没安装mysql呢,根据日志排错就可完成
我遇到的问题:
1、
浏览时候报这个错,大概可以看出是iis用户权限的问题
解决办法:标识默认是ApplicationPoolIdentity请修改为LocalSystem即可
2、这个是程序报错,只能看你的代码或者配置是否有问题,可以看log输出的日志定位问题
3、安装环境的时候注意是否对应自己的项目netcore版本号。
比如说一开始的环境是.NET7的SDK,但是你还有个NETCore2.1的项目,那你就得新安装2.1的sdk、runtime、托管捆绑包即可,不会与net7冲突。
4、发布后的文件可能会丢失一些xml或者json的配置文件,可以自己对比源项目检查一下