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">修改后的項目結構如下

五,運行效果如下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM