dotnet5将asp.net webapi宿主到wpf

proginn468312

共 2180字,需浏览 5分钟

 ·

2020-11-25 16:44

Dotnet 5将ASP.NET Core Web API宿主到wpf

由群友(孙令桥)提供《dotnet5将asp.net webapi宿主到wpf.pdf》,搬到公众号给大家一个参考,文末阅读原文可下载该pdf。

至于为什么要这么做?其中一个理由是不是方便界面配置服务参数?图形化展示服务器状态?其实有了WPF界面,你想实时展示什么都可以,就是无法跨平台了。

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

二、创建.Net5的WPF项目WpfApp

三、创建.Net5的Asp.Net WebApi项目

WebApiProvidor

四、修改WebApiProvider项目与WpfApp项目

1、修改WebApiProvider项目的输出类型

修改WebApiProvider项目的输出类型

复制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
{
  /// 
  /// Interaction logic for App.xaml
  /// 

  public partial class App : Application
 {
    protected override void OnStartup(StartupEventArgs e)
   {
      base.OnStartup(e);
      Host.CreateDefaultBuilder()
       .ConfigureWebHostDefaults(webBuilder =>
       {
          webBuilder.UseStartup();
       }).Build().RunAsync();
   }
 }
}

4、添加Model与Controller到WpfApp项目中

using System;
namespace WpfApp.Models
{
  public class Foo
 {
    public DateTime Registration { getset; }
    public int Age { getset; }
    public string Address { getset; }
 }
}
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 FooControllerControllerBase
 {
    private static readonly string[] Addresses = new[]
   {
      "Hubei""Guangzhou""Shengzhen""Beijing""Shandong",
"Jingmen""Wuhan""Jingshan"
   };
    private readonly ILogger _logger;
    public FooController(ILogger logger)
   {
      _logger = logger;
   }
   [HttpGet]
    public IEnumerable Get()
   {
      var rng = new Random();
      return Enumerable.Range(15).Select(index => new Foo()
       {
          Registration = DateTime.Now.AddDays(index),
          Age = rng.Next(1255),
          Address = Addresses[rng.Next(Addresses.Length)]
       })
       .ToArray();
   }
 }
}

5、修改WpfApp项目的Project文件的

Sdk="Microsoft.Net.Sdk.WindowsDesktop"> 修改为修改后的项目结构如下

五、运行效果如下

运行效果如下
浏览 120
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报