关于如何用WPF实现WebApi自托管服务及交互

这篇具有很好参考价值的文章主要介绍了关于如何用WPF实现WebApi自托管服务及交互。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Windows平台web服务一般托管于ISS。在开发中,会遇到需要上位机工程师提供对外API服务,本文将用WPF代码实现。

先看效果图

软件界面:

wpf与web交互数据,microsoft

 服务界面

wpf与web交互数据,microsoft

 

需要引入开发包

Microsoft.AspNet.WebApi.Client

Microsoft.AspNet.WebApi.Core

Microsoft.AspNet.WebApi.SelfHost

Newtonsoft.Json

下图为代码简单框架

wpf与web交互数据,microsoft

 HttpService.cs:HTTP 服务类

HomeController.cs:控制器,用于相应WebApi响应

1.搭建WPF主界面

MainWindow.xaml

<Grid>
        <StackPanel>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="Port:" Margin="10"/>
                <TextBox x:Name="TextBox_Port" Text="8080" Width="100" Margin="10"/>
                <Button x:Name="Btn_Start" Content="开始" Width="50" Margin="10" Click="Btn_Start_Click"/>
                <Button x:Name="Btn_Stop" Content="结束" Width="50" Margin="10" Click="Btn_Stop_Click"/>
            </StackPanel>
        </StackPanel>
    </Grid>

2.MainWindow.xaml.cs

private HttpService _http;//服务对象

///打开
        private async void Btn_Start_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var port = Convert.ToInt32(TextBox_Port.Text);

                _http = new HttpService(port);

                await _http.StartHttpServer();
            }
            catch(Exception ex)
            {
                LogHelper.WriteLogByType(LogEnum.Error, ex.Message);
            }

        }

//关闭
        private async void Btn_Stop_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                await _http.CloseHttpServer();
                _http.Dispose();
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogByType(LogEnum.Error, ex.Message);   
            }
        }

3.HTTP服务类代码

public class HttpService : IDisposable
    {
        /// <summary>
        /// 端口号
        /// </summary>
        public int Port { get;set; }

        /// <summary>
        /// Http self hosting
        /// </summary>
        private readonly HttpSelfHostServer _server;

        public HttpService(int port)
        {
            this.Port = port;
            var config = new HttpSelfHostConfiguration($"http://localHost:{this.Port}");

            config.MapHttpAttributeRoutes();
            config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{action}");
            _server = new HttpSelfHostServer(config);
        }

        #region HTTP Service
        /// <summary>
        /// start HTTP server
        /// </summary>
        /// <returns></returns>
        public Task StartHttpServer()
        {
            return _server.OpenAsync();
        }
        /// <summary>
        /// Close HTTP service
        /// </summary>
        /// <returns></returns>
        public Task CloseHttpServer() 
        {
            return _server.CloseAsync(); 
        }
        #endregion

        
        public void Dispose()
        {
            _server.Dispose();
        }
    }

4.控制器代码文章来源地址https://www.toymoban.com/news/detail-609216.html

[RoutePrefix("api/home")]
    public class HomeController:ApiController
    {
        [Route("echo")]
        [HttpGet]
        public IHttpActionResult Echo(string name)
        {
            return Json(new { Name = name, Message = $"Hello,{name},action"});
        }
    }

到了这里,关于关于如何用WPF实现WebApi自托管服务及交互的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(四)

    最近通过WPF开发项目,为了对WPF知识点进行总结,所以利用业余时间,开发一个学生信息管理系统【Student Information Management System】。前三篇文章进行了框架搭建和模块划分,后台WebApi接口编写,以及课程管理模块开发,本文在前三篇基础之上,继续深入开发学生信息管理系统

    2024年02月04日
    浏览(46)
  • 基于WPF Opencv实现一个图像可移动、缩放和可交互的显示窗口

    学习Halcon的HSmartWindowControl窗口控件,用WPF和Opencv仿照了一个。 显示控件的主体是两个Canvas: Root Canvas是背景,刷上了网格; 把要显示的图像作为Image Canvas的图像背景, 后面图像的移动,缩放,实质都是Image Canvas。 可交互,学习的是Halcon的绘图对象,WPF的Path来实现的,Path类

    2023年04月09日
    浏览(42)
  • 使用WPF、OwinSelfHost和Swagger创建自托管的Web API

    在本篇博客中,我将介绍如何在WPF应用程序中使用OwinSelfHost和Swagger来创建自托管的Web API。我们将使用WPF作为我们的应用程序界面,OwinSelfHost来自托管我们的Web API,并使用Swagger来为我们的API生成文档。 首先,确保你的计算机上已安装了以下组件: Visual Studio2017 .NET Framework(

    2024年02月07日
    浏览(44)
  • 「实用分享」如何用Telerik UI组件创建可扩展的企业级WPF应用?

    Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visual Studio工具箱中。 WPF通常用于具有复杂数据需求的高性能

    2024年02月02日
    浏览(43)
  • WPF入门到跪下 第九章 MVVM-跨模块交互

    在实际开发过程中,经常会遇到多个窗口对象,随之而来的就是对应的多个ViewModel对象,这些对象在一定条件下会发生相互访问的情况,例如VM与不同窗口交互、VM与不同VM交互,这些不同模块对象之间的交互,就是跨模块交互。 MVVM模式下跨模块交互解决方案 面对跨模块交互

    2024年02月02日
    浏览(35)
  • C#中WPF实现依赖注入和MVVM,以及服务定位ServiceLocator

    最近在想重写架构于是就研究了一套WPF的相关内容,WPF不像MAUI内置了容器,需要我们自己手动添加,于是就有了今天的内容。 首先,我们新建一个.net6.0的WPF项目 由于WPF没有内置容器,我们先安装一下依赖注入的nuget包 Microsoft.Extensions.DependencyInjection 点开App.xaml文件,修改为如

    2024年02月04日
    浏览(46)
  • 探索微软的XamlBehaviorsWpf:强大的WPF UI交互库

    项目地址:https://gitcode.com/microsoft/XamlBehaviorsWpf 在.NET框架中,Windows Presentation Foundation(WPF)是一个用于构建桌面应用程序的强大平台,而微软的XamlBehaviorsWpf项目则为WPF开发者提供了一组灵活、易于使用的UI行为库,极大地丰富了用户体验的设计和实现。 XamlBehaviorsWpf是微软开源

    2024年04月13日
    浏览(28)
  • WPF--关于Action事件小结

    WPF--关于Action事件小结 1.需要类实例去调用事件建立订阅关系         public event Actionint, object MaintainEvent;         new GP1().MaintainEvent += NormalCmdAction; 2.static用处--在不便实例的时候,可以直接由类调用         public static event Actionint, object MaintainEvent;         GP1.MaintainEvent +=

    2024年02月12日
    浏览(31)
  • WPF HandyControl 界面交互反馈:对话框+加载框+列表选择

    我学了HandyControl的基础使用,但是发现HandyControl 封装了基础的消息提示,但是没有封装基础的交互逻辑。可能是因为我写了Uniapp,我知道封装了基础的交互其实一般就够用了。 Uniapp 界面交互反馈 我现在觉得,代码要低耦合一点,每个模块都纯粹一点,这一次我就不添加Nl

    2024年01月19日
    浏览(39)
  • 关于WPF中Command绑定传参数以及将命令绑定到其它事件的方法

    前言:在WPF中,将命令绑定到一个Button的Command属性中是非常简单的事情,例如: 但是很多时候,我们要实现其它事件的命令绑定,以此实现彻底的MVVM开发模式,那就得用到微软另外一个神器了!它就是程序集System.Windows.Interactivity,在网上可以下载System.Windows.Interactivity.dll这

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包