C# 桌面程式也能當作WebAPI服務器
有時希望桌面程式(Winform , Console...)也能接受別的程式呼叫觸發對應動作, 可以使用這個方法。
參考資料:
https://blog.darkthread.net/blog/self-host-web-api/
STEP-01 在桌面程式程式(這裡使用Console), 透過Nuget安裝[Microsoft.AspNet.WebApi.SelfHost]。(輸入self host就可以找到)
STEP-02 新增下面API服務CODE
- static void Main(string[] args)
- {
- //指定聆聽的URL
- var config = new HttpSelfHostConfiguration("http://localhost:22222");
- //注意: 在Vista, Win7/8,預設需以管理者權限執行才能繫結到指定URL,否則要透過以下指令授權
- //開放授權 netsh http add urlacl url=http://+:32767/ user=machine\username
- //移除權限 netsh http delete urlacl url=http://+:32767/
- //設定路由
- config.Routes.MapHttpRoute("API", "{controller}/{action}/{id}",
- new { id = RouteParameter.Optional });
- //設定Self-Host Server,由於會使用到網路資源,用using確保會Dispose()加以釋放
- using (var httpServer = new HttpSelfHostServer(config))
- {
- //OpenAsync()屬非同步呼叫,加上Wait()則等待開啟完成才往下執行
- httpServer.OpenAsync().Wait();
- Console.WriteLine("Web API host started...");
- //輸入exit按Enter結束httpServer
- string line = null;
- do
- {
- line = Console.ReadLine();
- }
- while (line != "exit");
- //結束連線
- httpServer.CloseAsync().Wait();
- }
- }
STEP-03 建立API Controller (建立Class後, 自行輸入繼承ApiController即可)
- public class AController : ApiController
- {
- public string GetDateTime()
- {
- return DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
- }
- }
STEP-04 瀏覽器輸入 http://localhost:22222/A/GetDateTime , 就可以呼叫API取得回傳資料
留言
張貼留言