iis 添加托管模块php,在IIS上部署(托管).NET Core站点

部署教程

操作系统要求

Windows 7 或更高版本

Windows Server 2008 R2 或更高版本

依赖的组件

a03c67feb0bd

image.png

可以选择.NET Core版本,选择 Runtime & Hosting Bundle 开始下载。

这里一定注意左边的版本标识了Sdk和运行时对应的Asp.NET Core IIS Module等各项版本信息

a03c67feb0bd

image.png

安装完成后通过在IIS管理台上通过 模块按钮查看,如下图

a03c67feb0bd

image.png

a03c67feb0bd

image.png

部署站点

部署方式和部署.NET站点一样(安装IIS和常规的IIS相关组件),只是需要将站点的应用程序池设置.NET CLR版本为 无托管代码,如下图:

a03c67feb0bd

image.png

接下来重启服务器;

web.config详解

vs发布后的站点文件夹下会带有一个web.config文件。文件格式如下:

上面的handlers节点下包含名称aspNetCore,modules=“AspNetCoreModule

”的节点。意思即对应IIS下的AspNetCoreModule HttpModule。 这里不要对其进行改动,保持默认配置即可。

下面的aspNetCore节点内的processPath意思表示该站点需在IIS工作进程内托管,这种模式称之为进程内托管模型。在进程内托管时,该模块会使用 IIS 进程内服务器实现,即 IIS HTTP 服务器 (IISHttpServer)。在IIS托管下使用进程内托管模式比进程外托管模式性能更强。 stdoutLogEnabled属性表示是否开启日志(建议开启),

stdoutLogFile属性表示日志输出目录。

可以在配置文件中新增环境变量,如下:

ASPNETCORE_ENVIRONMENT变量对应项目的appsettings.json文件读取目录(可读取开发环境Development或生产环境Product)

CONFIG_DIR是我们自定义的一个环境变量,可在站点启动时候读取该变量做相应的逻辑。

注意此配置文件下的环境变量权重高于我们在操作系统下配置的环境变量

常见的部署问题(持续更新)

上面的部署步骤我都走完后,开启站点遇到下面这个错误:

a03c67feb0bd

image.png

404!!!!!

我还只是默认的webapi啊,代码都是微软自动生成的啊!!!然后查看IIS日志, 如下图

a03c67feb0bd

image.png

a03c67feb0bd

image.png

打开IIS日志存放目录,C:\inetpub\logs\LogFiles\W3SVC4打开一看,没问题啊,没有错误日志啊(内心很纠结。。。)。

各种百度、Goolge就是没找到解决办法,一直以为是环境问题,服务器都重启了不下3次

最后自己尝试手动补齐了路由,一看可以了!!!

说到底还是对.NetCore了解不够深入,发布后IIS托管站点后不会对路由默认补齐,所以在项目的launchSettings.json文件里改成一朵花都没用。

a03c67feb0bd

image.png

默认路由未自动补齐导致404的解决办法:

1、Nuget 安装Microsoft.AspNetCore.Rewrite

2、在启动项目Startup.Configure方法下的app.UseMvc();代码前加入下面代码:

var option = new RewriteOptions();

option.AddRedirect("^$", "swagger"); //swagger为补充的路由

app.UseRewriter(option);

app.UseMvc();·

哎,本来还想部署在Linux上的,结果在IIS上部署都出西西,真的当时都怀疑自己了。

也是在开发经历上遇到的各种问题吧,让我能更深入的去理解问题本质并着手解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值