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