如果你刚刚安装好了 IIS,却不知道如何运行自己的第一个 .NET 网站,那么本文就是为你准备的。
很多初学者学习 .NET 时都会遇到这样的问题:
-
IIS 已经安装好了,下一步该干什么?
-
Visual Studio 太大,能不能使用 VS Code?
-
Hello World 怎么写?
-
如何发布程序?
-
IIS 如何部署?
-
为什么总是出现 HTTP 500.19?
-
Hosting Bundle 到底是什么?
本文将从零开始,带你完成第一个 ASP.NET Core 程序的开发、发布与部署。
最终效果如下:
浏览器访问:
http://localhost:8080
页面输出:
Hello World from IIS!
一、环境准备
开发环境:
| 软件 | 版本 |
|---|---|
| Windows 10/11 或 Windows Server | 任意 |
| IIS | 已安装 |
| .NET SDK | 8.0 |
| VS Code | 最新版 |
| C# Dev Kit 插件 | 最新版 |
其中:
-
IIS 负责部署网站
-
VS Code 编写代码
-
.NET SDK 编译程序
先验证 SDK 是否安装成功:
dotnet --version
如果输出:
8.0.xxx
说明安装成功。
二、创建第一个 ASP.NET Core 项目
打开 VS Code。
打开终端。
执行:
dotnet new web -o HelloWorldApp
参数说明:
new web
表示创建一个最简单的 ASP.NET Core Web 项目。
-o HelloWorldApp
表示输出到 HelloWorldApp 目录。
进入项目:
cd HelloWorldApp
然后:
code .
即可用 VS Code 打开项目。
三、编写 Hello World
打开 Program.cs。
删除所有代码。
修改为:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World from IIS!");
app.Run();
整个程序只有几行代码。
其中:
WebApplication.CreateBuilder()
创建 Web 应用。
MapGet()
注册一个 GET 请求。
访问:
/
时返回:
Hello World from IIS!
最后:
app.Run();
启动 Web 服务。
四、本地运行测试
终端执行:
dotnet run
输出类似:
Now listening on:
http://localhost:5000
浏览器打开:
http://localhost:5000
即可看到:
Hello World from IIS!
说明程序没有问题。
五、发布程序
开发完成后,需要发布。
执行:
dotnet publish -c Release -o ../publish/helloworld
看到:
HelloWorldApp ->
F:\code\dotnet\publish\helloworld\
说明发布成功。
很多人还会看到:
所有项目均是最新的,无法还原。
不用担心。
它真正的意思是:
当前所有 NuGet 包都已经存在,不需要重新下载,因此跳过 Restore 步骤。
这不是错误,而是正常提示。
发布目录大概如下:
publish
│
├── HelloWorldApp.dll
├── HelloWorldApp.exe
├── appsettings.json
├── web.config
└── ...
其中:
最重要的是:
web.config
这是 IIS 启动 ASP.NET Core 的入口。
六、安装 .NET Hosting Bundle
这是新手最容易遗漏的一步。
很多人安装了 SDK。
却没有安装:
.NET Hosting Bundle
Hosting Bundle 包含:
-
ASP.NET Core Runtime
-
IIS 模块
-
AspNetCoreModuleV2
没有它:
IIS 根本不知道如何运行 .NET 程序。
安装完成后一定执行:
iisreset
重新启动 IIS。
七、部署到 IIS
打开:
inetmgr
进入 IIS 管理器。
右键:
网站
选择:
添加网站
填写:
网站名称:
HelloWorldApp
物理路径:
F:\code\dotnet\publish\helloworld
端口:
8080
点击确定。
八、修改应用程序池
这是部署 ASP.NET Core 最关键的一步。
进入:
应用程序池
找到:
HelloWorldApp
右键:
高级设置
修改:
.NET CLR Version
改成:
No Managed Code
很多初学者都会误以为:
.NET 程序应该选择:
.NET CLR v4.0
其实 ASP.NET Core 已经不再运行在 CLR 中,而是通过 Kestrel + AspNetCoreModuleV2 工作,因此必须选择:
No Managed Code
九、访问网站
浏览器输入:
http://localhost:8080
如果一切正常,就会看到:
Hello World from IIS!
恭喜!
你的第一个 .NET 网站已经成功部署到 IIS。
十、常见错误排查
1、HTTP 400 Bad Request
错误:
HTTP Error 400
The request hostname is invalid
原因通常有:
-
Host Name 填写错误
-
绑定了错误域名
-
浏览器访问地址不正确
建议:
绑定中:
Host Name
保持为空。
2、HTTP 500.19
错误:
HTTP Error 500.19
0x8007000d
这是最经典的问题。
99% 都是:
没有安装 Hosting Bundle。
或者:
安装以后没有执行:
iisreset
3、应用程序池设置错误
如果:
.NET CLR Version
选择了:
v4.0
很可能导致程序无法正常启动。
正确设置应该是:
No Managed Code
4、权限不足
确保发布目录具有:
IIS_IUSRS
读取权限。
否则 IIS 无法读取程序文件。
十一、完整部署流程图
VS Code
│
│ 编写代码
▼
Program.cs
│
│
dotnet run
│
▼
本地运行成功
│
│
dotnet publish
│
▼
生成发布目录
│
│
安装 Hosting Bundle
│
▼
iisreset
│
▼
IIS 添加网站
│
▼
修改应用程序池
(No Managed Code)
│
▼
浏览器访问
localhost:8080
│
▼
Hello World
总结
第一次接触 .NET 与 IIS 时,真正需要掌握的核心流程其实只有六步: