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取得回傳資料



留言

這個網誌中的熱門文章

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

Oracle 例外控制(Exception Control)

Oracle 工作排程 DBMS_JOB 筆記