编写并部署第一个 .NET 程序——从 VS Code 到 IIS 全流程实战(Hello World)

如果你刚刚安装好了 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 时,真正需要掌握的核心流程其实只有六步:

  1. 使用 VS Code 创建 ASP.NET Core 项目。

  2. 编写最简单的 Hello World 程序并完成本地调试。

  3. 使用 dotnet publish 发布程序。

  4. 安装与项目版本对应的 .NET Hosting Bundle,让 IIS 具备运行 ASP.NET Core 应用的能力。

  5. 在 IIS 中创建网站,并将应用程序池设置为 No Managed Code

  6. 访问站点并掌握 HTTP 400、HTTP 500.19 等常见错误的排查方法。