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项目的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 { 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 _logger;
public FooController(ILogger logger )
{
_logger = logger;
}
[HttpGet]
public IEnumerable 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();
}
}
}
5、修改WpfApp项目的Project文件的
Sdk="Microsoft.Net.Sdk.WindowsDesktop"> 修改为
五、运行效果如下
评论