LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#WinForm实现WebApi接口服务

admin
2025年7月5日 10:19 本文热度 27

在项目中经常会用到各种通讯方式,现介绍一下WinForm实现WebApi接口服务,不依赖IIS宿主;编码道路虽然枯燥,只要我们坚定信念;时光会看见你的成长,也终将不负你的努力。↖(^ω^)↗

一、效果展示
启动服务
接收数据
Postman发送数据
整体效果
二、功能设计
VS2017界面设计

NuGet安装Microsoft.AspNet.WebApi.OwinSelfHost

安装完成
IP、端口配置
三、核心代码

请求路由Startup.cs

using Owin;using System;using System.Net.Http.Headers;using System.Web.Http;
namespace FilterDemo{    class Startup    {        public void Configuration(IAppBuilder appBuilder)        {            try            {                HttpConfiguration config = new HttpConfiguration();                config.Routes.MapHttpRoute(                    name: "DefaultApi",                    routeTemplate: "api/{controller}/{id}",                    defaults: new { id = RouteParameter.Optional }                );                appBuilder.UseWebApi(config);            }            catch (Exception ex)            {                throw ex;            }        }    }}

接口方法HomeController.cs

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Web.Http;
namespace FilterDemo{    public class HomeController : ApiController    {        [HttpGet]        public IHttpActionResult Get(int address)        {            string str = "123466";            return Json(str);        }        [HttpPost]        public IHttpActionResult Post([FromBody]  List<string> values)        {            Dictionary<stringobject> dic = new Dictionary<stringobject>();            try {                //将接收到的信息赋给事件类中Message属性                FormMain.TriggerEvent.Message = values;                //触发事件类中事件,将消息传递给桌面程序绑定的方法                FormMain.TriggerEvent.OnMessage();
                dic.Add("flag"true);                dic.Add("msg""成功");            } catch(Exception ex) {                dic.Add("flag"false);                dic.Add("msg", ex.Message);            }            return Json(dic);        }        [HttpPut]        public IHttpActionResult Put(int id, string value)        {            string str = "123466";            return Json(str);        }        [HttpDelete]        public IHttpActionResult Delete(int id)        {            string str = "123466";            return Json(str);        }    }}

启动WebApi接口服务

#region WebApi接口服务public static OWINTriggerEvent TriggerEvent { getset; }private IDisposable _webApp;private string BaseUrl = "http://192.168.200.84:2000";
private void StartServer(){string serverIp = ConfigurationManager.AppSettings["ServerIP"];string serverPort = ConfigurationManager.AppSettings["ServerPort"]; BaseUrl = $"http://{serverIp}:{serverPort}";
_webApp = WebApp.Start<Startup>(BaseUrl); AppendLog($"服务已启动: {BaseUrl}");
//新建OWINTriggerEvent类实例,并返回被调用方使用获取里面的message和infoEvent事件var triggerEvent = new OWINTriggerEvent(); TriggerEvent = triggerEvent; TriggerEvent.infoEvent += TriggerEvent_infoEvent;}
private void TriggerEvent_infoEvent(object sender, EventArgs e){try { List<string> msgList = TriggerEvent.Message; AppendLog("接收到信息:"+ JsonConvert.SerializeObject(msgList));foreach (var item in msgList) { loadPcdToImage(item); AppendLog("处理点云文件:" + item); } }catch (Exception ex) {throw; }}
private void StopServer(){ _webApp?.Dispose(); AppendLog("服务已停止");}
// 跨线程安全更新UIprivate void AppendLog(string message){ DateTime d = DateTime.Now;string dateStr = d.ToString("yyyy-MM-dd HH:mm:ss:fff");
if (rtbLog.InvokeRequired) rtbLog.BeginInvoke(new Action(() => rtbLog.AppendText(dateStr + " " + message + "\r\n")));else rtbLog.AppendText(dateStr + " " + message + "\r\n");}#endregion

Microsoft.AspNet.WebApi.OwinSelfHost是一个用于在非IIS环境下自托管ASP.NET Web API的NuGet包,它基于OWIN(Open Web Interface for .NET)规范实现‌

以下是其主要特点和用法:

  1. 核心功能
  • 允许Web API脱离IIS运行,可在控制台应用、Windows服务等环境中托管‌
  • 使用HttpListener作为底层HTTP服务器‌
  • 支持完整的Web API功能,包括路由、控制器、过滤器等‌
  1. 安装方式
    通过NuGet包管理器控制台执行命令:
textCopy Code

Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

这会自动安装相关依赖包,包括Microsoft.Owin.Host.HttpListener和Microsoft.AspNet.WebApi.Owin‌

  1. 基本配置步骤
  • 创建控制台应用程序项目(.NET Framework 4.0+) ‌
  • 添加Startup类配置Web API路由‌
  • 在Program.cs中启动OWIN宿主‌
  1. 典型应用场景
  • 开发轻量级API服务‌
  • 在WinForm程序中集成Web API‌
  • 需要跨平台部署的解决方案‌
  1. 优势比较
  • 比传统IIS托管更轻量‌
  • 比HttpSelfHost更灵活(支持中间件管道)
  • 支持静态文件服务等扩展功能‌


阅读原文:原文链接


该文章在 2025/7/7 11:43:43 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved