因为工作需求,用.net core做的项目,现需发布到IIS上去。
与asp.net不同,asp.net core不再由IIS工作进程w3wp.exe托管,因此需要确保IIS上已经安装AspNetCoreModule模块,请求通过此模块重定向到asp.net core项目中,因此我无需设置应用程序池来托管我们的代码,应用程序池应设置为无托管代码。
1、安装AspNetCoreModule模块
确保已经安装模块,选中IIS左侧根节点,右侧出现如图如示:
选中模块查看是否存在AspNetCoreModule,注意不同的机器显示的顺序不一样
下载地址:AspNetCoreModule,成功安装后,需用管理员权限打开命令行:
输入
net stop was /y
运行完再运行
net start w3svc
2、部署
创建网站,设置好网站地址及路径,网站会默认生成一应用程序池,选择应用程序池,设置为无托管代码
运行,大功告成
3、排错
小编在配置好以上步骤后,访问没有成功报
此错误提示对解决问题太笼统,不容易找到问题,因此需启用asp.net核心模块的stdout日志
(1)打开站点目录,创建logs文件夹
(2)在站点目录下找到web.config文件,将aspNetCore配置节的stdoutLogEnabled="true",stdoutLogFile=创建的logs文件夹路径
(3)保存更新的web.config文件
(4)向应用程序发出请求
(5)打开logs文件夹,查看日志,可以根据日志排查错误。注意:日志写入有延迟,如果没有日志文件,可稍等
重要!根据微软提供的文档,在完成故障排除后禁用stdout日志记录。
需重新将stdoutLogEnabled设置为false