ASP.NET Core 应用在 Windows 上如何运行?

819 查看

概述

从 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及更新版本的系统。

发布步骤

  1. 从官网上下载 ASP.NET Core Module 模块并安装到服务器上
  2. 命令行中执行 iisreset 重启 IIS 服务器
  3. 新建目录用于发布应用,比如: d:\websites\demo
  4. 在 IIS 上添加网站 demo 端口为 8080,物理路径选择刚才新建的 d:\websites\demo
  5. 设置上一步创建的应用程序池 demo 为 无托管模式
  6. 将 ASP.NET Core 项目 demo 发布的所有文件通过 FTP 拷贝到服务器的 d:\websites\demo 目录
  7. 打开命令行使用一下命令测试应用是否启动正常 dotnet demo.dll
  8. 关闭命令行,启动浏览器访问 http://localhost:8080 一起正常

注意事项

  1. 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)