一,创建空白解决方案WPF With Asp.Net WebApi
二,创建.Net5的WPF项目WpfApp
三,创建.Net5的Asp.Net WebApi项目WebApiProvidor
四,修改WebApiProvider项目与WpfApp项目
- 修改WebApiProvider项目的输出类型

- 复制WebApiProvider项目的Startup.cs、appsettings.json、Programe.cs中的Host初始化部分的代码到WpfApp中, 删除WebApiProvider中无用的代码
- WpfApp项目中App.xaml.cs
| using System.Windows; |
| using Microsoft.AspNetCore.Hosting; |
| using Microsoft.Extensions.Hosting; |
| |
| namespace WpfApp |
| { |
| |
| |
| |
| public partial class App : Application |
| { |
| protected override void OnStartup(StartupEventArgs e) |
| { |
| base.OnStartup(e); |
| |
| Host.CreateDefaultBuilder() |
| .ConfigureWebHostDefaults(webBuilder => |
| { |
| webBuilder.UseStartup<Startup>(); |
| }).Build().RunAsync(); |
| } |
| } |
| } |
- 添加Model与Controller到WpfApp项目中
| using System; |
| |
| namespace WpfApp.Models |
| { |
| public class Foo |
| { |
| public DateTime Registration { get; set; } |
| public int Age { get; set; } |
| public string Address { get; set; } |
| } |
| } |
| using System; |
| using System.Collections.Generic; |
| using System.Linq; |
| using Microsoft.AspNetCore.Mvc; |
| using Microsoft.Extensions.Logging; |
| using WebApiProvider.Controllers; |
| using WpfApp.Models; |
| |
| namespace WpfApp.Controllers |
| { |
| [ApiController] |
| [Route("[controller]")] |
| public class FooController: ControllerBase |
| { |
| private static readonly string[] Addresses = new[] |
| { |
| "Hubei", "Guangzhou", "Shengzhen", "Beijing", "Shandong", "Jingmen", "Wuhan", "Jingshan" |
| }; |
| |
| private readonly ILogger<WeatherForecastController> _logger; |
| |
| public FooController(ILogger<WeatherForecastController> logger) |
| { |
| _logger = logger; |
| } |
| |
| [HttpGet] |
| public IEnumerable<Foo> Get() |
| { |
| var rng = new Random(); |
| return Enumerable.Range(1, 5).Select(index => new Foo() |
| { |
| Registration = DateTime.Now.AddDays(index), |
| Age = rng.Next(12, 55), |
| Address = Addresses[rng.Next(Addresses.Length)] |
| }) |
| .ToArray(); |
| } |
| } |
| } |
- 修改WpfApp项目的Project文件的
<Project Sdk="Microsoft.Net.Sdk.WindowsDesktop">
修改为<Project Sdk="Microsoft.Net.Sdk">
修改后的项目结构如下

五,运行效果如下

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南