dotnet5将asp.net webapi宿主到wpf

一,创建空白解决方案WPF With Asp.Net WebApi

二,创建.Net5的WPF项目WpfApp

三,创建.Net5的Asp.Net WebApi项目WebApiProvidor

四,修改WebApiProvider项目与WpfApp项目

  1. 修改WebApiProvider项目的输出类型
  2. 复制WebApiProvider项目的Startup.cs、appsettings.json、Programe.cs中的Host初始化部分的代码到WpfApp中, 删除WebApiProvider中无用的代码
  3. WpfApp项目中App.xaml.cs
using System.Windows;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace WpfApp
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Host.CreateDefaultBuilder()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).Build().RunAsync();
}
}
}
  1. 添加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();
}
}
}
  1. 修改WpfApp项目的Project文件的<Project Sdk="Microsoft.Net.Sdk.WindowsDesktop">修改为<Project Sdk="Microsoft.Net.Sdk">修改后的项目结构如下

五,运行效果如下

posted @   非法关键字  阅读(2614)  评论(9编辑  收藏  举报
编辑推荐:
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
阅读排行:
· 趁着过年的时候手搓了一个低代码框架
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现
点击右上角即可分享
微信分享提示