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

  1. static void Main(string[] args)
  2. {
  3. //指定聆聽的URL
  4. var config = new HttpSelfHostConfiguration("http://localhost:22222");
  5.  
  6. //注意: 在Vista, Win7/8,預設需以管理者權限執行才能繫結到指定URL,否則要透過以下指令授權
  7. //開放授權 netsh http add urlacl url=http://+:32767/ user=machine\username
  8. //移除權限 netsh http delete urlacl url=http://+:32767/
  9.  
  10. //設定路由
  11. config.Routes.MapHttpRoute("API", "{controller}/{action}/{id}",
  12. new { id = RouteParameter.Optional });
  13. //設定Self-Host Server,由於會使用到網路資源,用using確保會Dispose()加以釋放
  14. using (var httpServer = new HttpSelfHostServer(config))
  15. {
  16. //OpenAsync()屬非同步呼叫,加上Wait()則等待開啟完成才往下執行
  17. httpServer.OpenAsync().Wait();
  18. Console.WriteLine("Web API host started...");
  19. //輸入exit按Enter結束httpServer
  20. string line = null;
  21. do
  22. {
  23. line = Console.ReadLine();
  24. }
  25. while (line != "exit");
  26. //結束連線
  27. httpServer.CloseAsync().Wait();
  28. }
  29. }

STEP-03 建立API Controller (建立Class後, 自行輸入繼承ApiController即可)

  1. public class AController : ApiController
  2. {
  3. public string GetDateTime()
  4. {
  5. return DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
  6. }
  7. }

STEP-04 瀏覽器輸入 http://localhost:22222/A/GetDateTime , 就可以呼叫API取得回傳資料



留言

這個網誌中的熱門文章

ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務

Oracle 工作排程 DBMS_JOB 筆記

Oracle 例外控制(Exception Control)