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取得回傳資料
留言
張貼留言