概述
从 ASP.NET Core 1.0.0 开始,Web应用的发布支持跨平台,不再依赖 Windows+IIS 服务器,官方建议的方式是始终使用 ASP.NET Core 自带的 Kestrel 服务器运行 Web 应用,使用 IIS(Windows Server)或 NGINX(Linux Server)服务器反向代理到 Kestrel 服务器上。以下是 Windows 服务器发布 ASP.NET Core 应用到 IIS 的详细步骤。注意目前 ASP.NET Core 应用只支持 Windows 7 和 Windows Server 2008 R2及更新版本的系统。
发布步骤
- 从官网上下载 ASP.NET Core Module 模块并安装到服务器上
- 命令行中执行
iisreset
重启 IIS 服务器 - 新建目录用于发布应用,比如:
d:\websites\demo
- 在 IIS 上添加网站 demo 端口为
8080
,物理路径选择刚才新建的d:\websites\demo
- 设置上一步创建的应用程序池 demo 为
无托管模式
- 将 ASP.NET Core 项目 demo 发布的所有文件通过 FTP 拷贝到服务器的
d:\websites\demo
目录 - 打开命令行使用一下命令测试应用是否启动正常
dotnet demo.dll
- 关闭命令行,启动浏览器访问
http://localhost:8080
一起正常
注意事项
- IIS只是一个反向代理服务器,并不会真正处理任何请求,所有请求都会转发给 Kestrel 服务器来处理,指定的物理路径是为了使用该路径下的 web.config 文件以确定要启动的进程路径、参数和日志文件路径等信息。当第一次请求
http://localhost:8080
地址时,如果反向代理指定的站点没有启动,IIS 则通过调用web.config文件中的命令(dotnet demo.dll
)来启动进程,该进程负责启动并运行 demo 网站。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\demo.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
<!--ProjectGuid: feb38ee8-0487-4bc1-a3ee-71fda1912cff-->
深入阅读
以下链接中有更深入的阅读,如果需要请移步链接 RUNNING ASP.NET CORE APPLICATIONS WITH IIS AND ANTARES (AZURE WEBSITES) 。