第一步:确认你的 ASP.NET 项目类型

你需要知道你的项目属于哪个“阵营”,因为这决定了运行方式:

如何运行asp.net网站
(图片来源网络,侵删)
  1. 传统 ASP.NET Web Forms / MVC (.NET Framework)

    • 特点:基于 .NET Framework,通常使用 Visual Studio 开发。
    • 项目文件:.csproj (旧格式)。
    • 部署:通常需要将编译好的文件(DLL)和 Web.config 部署到 Windows Server 上的 IIS。
  2. 现代 ASP.NET Core (MVC / Razor Pages / Blazor / API) (.NET 5/6/7/8)

    • 特点:跨平台(Windows, macOS, Linux),性能更好,是当前的主流。
    • 项目文件:.csproj (新格式,SDK-style)。
    • 部署:方式非常灵活,可以部署在 IIS 上,也可以使用跨平台的 Kestrel 服务器自托管。

第二步:选择运行环境

根据你的场景选择:

  • 本地开发与调试 (最常用)

    如何运行asp.net网站
    (图片来源网络,侵删)
    • 目的:快速编写代码、测试功能、查看错误。
    • 工具:Visual Studio (Windows) 或 Visual Studio Code (跨平台)。
  • 本地运行已发布的项目

    • 目的:测试已编译打包好的网站,模拟生产环境。
    • 工具:命令行、IIS Express (VS 内置) 或完整的 IIS。
  • 服务器部署 (生产环境)

    • 目的:让网站在公网上可以被访问。
    • 工具:IIS (Windows)、Nginx/Apache (Linux)、Docker 容器等。

详细操作指南

本地开发与调试

这是最简单、最直接的方式。

A. 使用 Visual Studio (推荐,适用于 .NET Framework 和 .NET Core)

  1. 安装 Visual Studio

    如何运行asp.net网站
    (图片来源网络,侵删)
    • 如果你开发的是 .NET Framework 项目,安装 Visual Studio 时请确保勾选 ".NET 桌面开发" 工作负载。
    • 如果你开发的是 .NET Core 项目,安装 Visual Studio 时请确保勾选 "ASP.NET 和 Web 开发" 工作负载。
  2. 打开和运行项目

    • 打开你的 ASP.NET 解决方案 (.sln 文件) 或项目 (.csproj 文件)。
    • 在 Visual Studio 顶部工具栏中,选择一个 启动配置 (通常是你的项目名称)。
    • 点击绿色的 “播放”按钮 (▶)
    • Visual Studio 会自动完成以下所有事情:
      • 还原 NuGet 包:下载项目所需的所有依赖库。
      • 编译项目:将你的代码编译成 DLL。
      • 启动开发服务器
        • 对于 .NET Framework,通常是 IIS Express
        • 对于 .NET Core,通常是内置的 Kestrel 服务器,并通过一个反向代理(如 IIS Express)暴露出来。
      • 在浏览器中打开网站:默认会在 https://localhost:xxxxhttp://localhost:xxxx (xxxx 是一个随机端口号) 打开你的网站。
  3. 调试

    • 你可以在代码中设置断点(点击行号旁边),然后再次点击播放按钮。
    • 当代码执行到断点时,程序会暂停,你就可以查看变量的值、单步执行代码,进行调试。

B. 使用 Visual Studio Code (适用于 .NET Core)

  1. 安装前提

    • 安装 .NET SDK (从 dotnet.microsoft.com 下载)。
    • 安装 Visual Studio Code
    • 在 VS Code 中安装 C# 扩展(由 Microsoft 发布)。
  2. 打开和运行项目

    • 在 VS Code 中打开你的项目文件夹。
    • F5 键,或者点击侧边栏的“运行和调试”图标,然后点击“运行和调试”按钮。
    • VS Code 会自动检测项目类型,并启动一个调试会话,默认使用 .NET CLI 命令 dotnet watch run 来运行项目。
    • 网站同样会在 https://localhost:xxxxhttp://localhost:xxxx 启动。

本地运行已发布的项目

当你完成开发,需要测试打包好的发布版本时。

  1. 发布项目

    • 在 Visual Studio 中,右键点击你的项目 -> 发布
    • 选择 "文件夹" 作为目标位置。
    • 选择发布配置(如 Release)。
    • 点击 "发布",这会在你指定的文件夹中生成所有编译好的文件(DLL、HTML、CSS、JS、配置文件等)。
  2. 运行发布后的文件

    • 方法 1:使用命令行(最通用)

      • 打开命令行(Windows 的 cmdPowerShell)。
      • 使用 cd 命令进入你刚才发布到的文件夹。
      • 对于 .NET Core 项目,运行以下命令:
        dotnet your-app-name.dll

        your-app-name.dll 是你发布后生成的 DLL 文件名)

      • 网站就会启动,你可以在浏览器中访问 http://localhost:5000 或类似的地址。
    • 方法 2:使用 IIS Express(仅限 Windows,适合 .NET Framework 和 .NET Core)

      • Visual Studio 在发布时,有时会生成一个用于 IIS Express 的 applicationhost.config 文件。
      • 你可以直接双击这个文件,它会在 IIS Express 中启动你的网站,无需安装完整的 IIS。
    • 方法 3:使用完整的 IIS(仅限 Windows,适合生产环境模拟)

      • 需要在 Windows Server 或 Windows 10/11 专业版/企业版上安装 IIS。
      • 在 IIS 管理器中,添加一个“网站”,指向你发布文件的物理路径。
      • 配置应用程序池(.NET Framework 项目需要对应版本,.NET Core 项目需要配置为“无托管代码”并指定 dotnet.exe 路径)。
      • 启动网站即可。

服务器部署 (生产环境)

这是让网站对外提供服务的关键步骤。

A. 部署到 Windows Server (使用 IIS)

这是最经典的部署方式,尤其适合 .NET Framework 和需要利用 Windows 生态的企业环境。

  1. 发布项目:同场景二,选择“文件夹”目标,并选择“Release”配置。
  2. 在服务器上安装 .NET 运行时
    • .NET Framework: 安装对应版本的 .NET Framework 运行时。
    • .NET Core: 安装对应版本的 .NET Runtime (不是 SDK)。
  3. 在服务器上安装和配置 IIS
    • 通过 "服务器管理器" -> "添加角色和功能" 来安装 IIS。
    • 安装时,确保勾选 "ASP.NET"(在 "Web 服务器 (IIS)" -> "应用程序开发" 下)。
  4. 部署文件
    • 将发布文件夹中的所有文件(web.config, *.dll, *.html 等)复制到服务器的某个目录,C:\inetpub\wwwroot\MyWebApp
  5. 在 IIS 中配置网站
    • 打开 IIS 管理器。
    • 在 "网站" 节点上右键,选择 "添加网站"。
    • 网站名称:给你的网站起个名字。
    • 物理路径:指向你刚才复制文件的文件夹 (C:\inetpub\wwwroot\MyWebApp)。
    • 端口:设置一个未被占用的端口号(如 80 或 443)。
    • 应用程序池
      • 对于 .NET Framework,选择对应的 .NET 版本(如 No Managed CodeASP.NET v4.0)。
      • 对于 .NET Core,创建一个新的应用程序池,选择 "无托管代码",然后在其高级设置中,将 "托管模式" 设为 "经典",并设置 "托管管道" 版本为 "无托管代码",你还需要在 web.config 中配置 aspNetCore 节点,指向 dotnet.exe 的路径和你的 DLL。
  6. 启动网站:点击“启动”按钮,你的网站现在就可以通过服务器的 IP 地址或域名访问了。

B. 部署到 Linux 或跨平台 (自托管 Kestrel)

这是现代 ASP.NET Core 推荐的方式,非常灵活。

  1. 发布项目

    • 在 Visual Studio 中发布时,选择 "Linux 通用""文件夹" 目标。
    • 关键:在发布配置中,将 "目标运行时" 设置为 linux-x64 (或其他目标平台,如 win-x64, osx-x64),并勾选 "生成独立的部署",这会将 .NET 运行时也打包进去,无需服务器上预先安装 .NET。
  2. 将文件传输到服务器

    • 使用 scp, rsync, FTP 等工具将整个发布文件夹上传到你的 Linux 服务器。
  3. 在服务器上运行

    • 通过 SSH 登录到 Linux 服务器。
    • 使用 cd 命令进入你上传的文件夹。
    • 给你的可执行文件(your-app-name)添加执行权限:
      chmod +x your-app-name
    • 运行你的应用:
      ./your-app-name
    • 你的网站已经在 Kestrel 服务器上启动了,默认监听 http://localhost:5000,但此时还无法从外部访问。
  4. 配置反向代理 (Nginx / Apache)

    • 出于安全和性能考虑,永远不要直接将 Kestrel 暴露在公网上,应该使用一个反向代理服务器(如 Nginx)来接收外部请求,然后转发给 Kestrel。

    • Nginx 配置示例 (/etc/nginx/sites-available/your-site):

      server {
          listen 80;
          server_name your-domain.com; # 你的域名或服务器IP
          location / {
              proxy_pass         http://localhost:5000; # 转发给Kestrel
              proxy_http_version 1.1;
              proxy_set_header   Upgrade $http_upgrade;
              proxy_set_header   Connection keep-alive;
              proxy_set_header   Host $host;
              proxy_cache_bypass $http_upgrade;
              proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header   X-Forwarded-Proto $scheme;
          }
      }
    • 保存文件后,创建一个符号链接到 sites-enabled 目录,然后重启 Nginx 服务:

      sudo ln -s /etc/nginx/sites-available/your-site /etc/nginx/sites-enabled/
      sudo nginx -t # 测试配置
      sudo systemctl restart nginx
  5. 使用进程管理器 (推荐)

    • 直接在命令行运行的应用,如果关闭 SSH 窗口,程序就会停止,为了解决这个问题,请使用进程管理器,如 systemdPM2
    • 使用 systemd (Linux 标准):创建一个服务单元文件 (/etc/systemd/system/kestrel-mywebapp.service),定义如何启动、停止和管理你的应用,然后设置为开机自启,这是最稳定、最推荐的方式。

总结与建议

场景 推荐工具 说明
本地开发调试 Visual Studio (Windows) 或 VS Code + C# 扩展 (跨平台) 最简单,一键启动,支持强大调试功能。
本地测试发布版 命令行 (dotnet ...dll)IIS Express 用于验证发布包是否正确。
生产环境部署 Windows Server + IISLinux + Nginx + Kestrel 根据你的服务器和技术栈选择,现代 .NET Core 项目更推荐 Linux + Nginx 的组合。

对于初学者,请从场景一(使用 Visual Studio 开发调试)开始,这是最快上手的方式,当你需要将网站分享给他人或部署上线时,再逐步学习场景二和场景三。