关键看模板选择:.NET Framework(仅Windows、IIS、Web Forms/.asmx)或.NET Core/.NET(跨平台、Kestrel、Razor Pages/Web API),两者运行时、依赖和部署方式完全不同,混用将直接报错;VS 2022 默认隐藏旧模板,需安装“ASP.NET 和 Web 开发”工作负载才可选.NET Framework模板。

Visual Studio 创建 ASP.NET Web 项目,关键看你要的是 .NET Framework(.asmx / Web Forms)还是 .NET Core / .NET(跨平台、现代 Web API 或 Razor Pages)——两者模板位置、依赖项、运行时完全不同,混用会直接报错或无法启动。
选对模板:.NET Framework 还是 .NET Core / .NET?
这是最容易卡住的第一步。VS 2022 默认隐藏旧版模板,且 .NET Framework 项目必须用 ASP.NET Web Application (.NET Framework) 模板;而新项目应优先选 ASP.NET Core Web App (Razor Pages) 或 ASP.NET Core Web API。
-
ASP.NET Web Application (.NET Framework):仅支持 IIS 或 IIS Express,能建.asmx服务、.aspx页面、WCF AJAX 服务,但不支持 .NET 6+ -
ASP.NET Core Web App (Razor Pages):基于 .NET 6/7/8/9,跨平台,内置 Kestrel,默认 HTTPS 开发证书,不兼容 Web Forms 控件或System.Web - 若在“新建项目”里搜不到
.NET Framework模板,说明没装对应工作负载:进工具 > 获取工具和功能 > ASP.NET 和 Web 开发(含 .NET Framework 支持)
创建 .NET Framework Web 项目(如需 .asmx 或 Web Forms)
适用于遗留系统对接、内部 SOAP 接口、或必须用 GridView 等服务端控件的场景。
Visual Studio 18.8.1 官方固定版本安装引导程序,当前条目使用微软发布历史中的 Professional Web Installer,适合旧项目兼容、环境回退、复现特定构建链和排查版本差异等场景。
- 新建项目 → 搜索
ASP.NET Web Application (.NET Framework)→ 选“空”模板(避免带 MVC 或 Web API 的干扰) - 勾选
Web Forms(即使不写 .aspx,.asmx也依赖它运行时) - 添加 Web 服务:右键项目 →
添加 > 新建项 > Web 服务 (ASMX)→ 文件名如SFCFunctionList.asmx - 注意:
.asmx项目无法启用 SSL(HTTPS)调试,IIS Express 不支持其 HTTPS 绑定,强行配会报Could not load type 'System.ServiceModel.Activation.HttpModule'
创建 .NET Core / .NET Web 项目(推荐新项目)
默认走 Kestrel + HTTPS 开发证书,结构清晰,发布即自包含部署包。
- 新建项目 → 搜索
ASP.NET Core Web App (Razor Pages)或ASP.NET Core Web API→ 选 .NET 9.0(当前最新 LTS) - 身份验证类型选
无(除非明确需要 JWT 或 Microsoft Entra ID) - 禁用容器支持(除非你真要用 Docker)
- 生成后,
Program.cs是入口,app.MapControllers()或app.MapRazorPages()决定路由行为 - 首次运行会弹窗提示是否信任开发证书 —— 必须点
是,否则浏览器拒绝https://localhost:5001
常见失败点:为什么项目建完打不开?
不是代码问题,而是环境或配置断层。
-
HTTP Error 500.30 - ANCM In-Process Startup Failure:多半是.NET SDK 版本不匹配,检查dotnet --list-sdks是否含项目所选框架(如 .NET 9.0),缺就去 dotnet.microsoft.com/download 装 - 右键“发布”灰色不可点:项目类型不是
Web Application(比如误建了 Class Library),或未加载成功(检查解决方案资源管理器顶部是否有黄色感叹号) - 改了
launchSettings.json的端口但没生效:确认applicationUrl里同时改了http和https行,且浏览器访问的是 https 地址(Chrome 对 localhost 自动跳 https) - 想用 Oracle 数据库却连不上:
Oracle Developer Tools for VS只支持 .NET Framework 项目,.NET Core 必须用Oracle.EntityFrameworkCore包 +Oracle.ManagedDataAccess.Core
真正麻烦的从来不是“怎么点下一步”,而是模板和运行时的隐式绑定关系——选错起点,后面每一步都在补救。尤其当团队里有人用 VS Code、有人用 VS,或要部署到 Linux 服务器时,.NET Framework 项目基本等于提前锁死技术路径。

















