如何使用IIS替代IIS Express运行ASP.Net Core应用并映射虚拟目录
完全可以用IIS替代IIS Express运行ASP.NET Core应用,这也是生产环境下ASP.NET Core应用的主流部署方式之一,同时也支持映射到IIS的虚拟目录作为子应用运行。
部署前置准备
- 首先安装与你应用SDK版本匹配的ASP.NET Core 托管捆绑包,安装完成后需要重启IIS服务,可直接执行以下命令完成重启:
net stop was /y net start w3svc
- 确认IIS已成功安装「ASP.NET Core 模块」,可在IIS管理器的站点模块列表中查看该条目是否存在。
完整部署操作步骤
- 发布ASP.NET Core应用:在Visual Studio中右键项目选择「发布」,部署目标选择「文件夹」,完成发布后保留所有输出的文件。
- 打开IIS管理器,右键左侧导航栏的「网站」节点,选择「添加网站」,依次填写站点名称、物理路径(选择刚才发布的文件夹根目录)、端口/域名绑定信息,确认创建站点。
- 配置应用程序池:找到新建站点对应的应用程序池,右键选择「基本设置」,将.NET CLR版本修改为「无托管代码」,ASP.NET Core运行时不依赖IIS的托管CLR。
- 文件夹权限配置:右键发布文件夹,依次选择「属性-安全-编辑-添加」,输入对象名称为
IIS AppPool\你新建的应用程序池名称,给该用户授予「读取和执行」「列出文件夹内容」「读取」权限即可。 - 访问测试:在浏览器输入你绑定的地址,确认应用可以正常启动运行。
虚拟目录映射操作说明
IIS完全支持将ASP.NET Core应用映射为虚拟目录下的子应用,操作流程如下:
- 在需要挂载子应用的父站点上右键,选择「添加虚拟目录」,填写虚拟目录别名(也就是子路径名,比如填
coreapp的话访问路径就是父站点地址/coreapp),物理路径选择ASP.NET Core应用的发布文件夹。 - 右键刚才创建的虚拟目录,选择「转换为应用程序」,选择使用设置为「无托管代码」的应用程序池,确认转换完成。
- 额外配置:需要在ASP.NET Core应用的启动代码中添加路径基准配置,.NET 6+版本在
Program.cs中添加代码app.UsePathBase("/你的虚拟目录别名");,注意该中间件要放在其他中间件注册之前,避免路由、静态资源加载出现路径错误。
内容的提问来源于stack exchange,提问作者Raed Alsaleh
相关产品推荐
相关产品推荐

