LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#WinForm實(shí)現(xiàn)WebApi接口服務(wù)

admin
2025年7月5日 10:19 本文熱度 510

在項目中經(jīng)常會用到各種通訊方式,現(xiàn)介紹一下WinForm實(shí)現(xiàn)WebApi接口服務(wù),不依賴IIS宿主;編碼道路雖然枯燥,只要我們堅定信念;時光會看見你的成長,也終將不負(fù)你的努力。↖(^ω^)↗

一、效果展示
啟動服務(wù)
接收數(shù)據(jù)
Postman發(fā)送數(shù)據(jù)
整體效果
二、功能設(shè)計
VS2017界面設(shè)計

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;                //觸發(fā)事件類中事件,將消息傳遞給桌面程序綁定的方法                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接口服務(wù)

#region WebApi接口服務(wù)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($"服務(wù)已啟動: {BaseUrl}");
//新建OWINTriggerEvent類實(shí)例,并返回被調(diào)用方使用獲取里面的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("處理點(diǎn)云文件:" + item); } }catch (Exception ex) {throw; }}
private void StopServer(){ _webApp?.Dispose(); AppendLog("服務(wù)已停止");}
// 跨線程安全更新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環(huán)境下自托管ASP.NET Web API的NuGet包,它基于OWIN(Open Web Interface for .NET)規(guī)范實(shí)現(xiàn)?

以下是其主要特點(diǎn)和用法:

  1. ?核心功能?
  • 允許Web API脫離IIS運(yùn)行,可在控制臺應(yīng)用、Windows服務(wù)等環(huán)境中托管?
  • 使用HttpListener作為底層HTTP服務(wù)器?
  • 支持完整的Web API功能,包括路由、控制器、過濾器等?
  1. ?安裝方式?
    通過NuGet包管理器控制臺執(zhí)行命令:
textCopy Code

Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

這會自動安裝相關(guān)依賴包,包括Microsoft.Owin.Host.HttpListener和Microsoft.AspNet.WebApi.Owin?

  1. ?基本配置步驟?
  • 創(chuàng)建控制臺應(yīng)用程序項目(.NET Framework 4.0+) ?
  • 添加Startup類配置Web API路由?
  • 在Program.cs中啟動OWIN宿主?
  1. ?典型應(yīng)用場景?
  • 開發(fā)輕量級API服務(wù)?
  • 在WinForm程序中集成Web API?
  • 需要跨平臺部署的解決方案?
  1. ?優(yōu)勢比較?
  • 比傳統(tǒng)IIS托管更輕量?
  • 比HttpSelfHost更靈活(支持中間件管道)
  • 支持靜態(tài)文件服務(wù)等擴(kuò)展功能?


閱讀原文:原文鏈接


該文章在 2025/7/7 11:43:43 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊、財務(wù)費(fèi)用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲色中文字幕在线播放囯产免费 | 久久91亚洲精品中文字幕奶水 | 日韩欧美永久中文字幕视频 | 亚洲v日韩v欧美高清在线观看 | 在线观看人成视频免费不卡 | 婷定香花五月天中文字幕在线 |