一. 簡單說明
開篇就介紹過WebApi和MVC相比,其中優勢之一就是WebApi可以不依賴於IIS部署,可以自托管,當然這里指的是 .Net FrameWork 下的 WebApi 和 MVC 相比較,在.Net Core下,當然就另行別論。
下面我們重點介紹的就是WebApi基於控制台程序進行部署。
1. 安裝程序集
通過Nuget添加程序集:Microsoft.AspNet.WebApi 和 System.Web.Http.SelfHost。
2. 新建一個WebApi的控制器,里面有一個CheckLogin的Get方法。
代碼如下:
1 public class ForthController : ApiController 2 { 3 //Get http://localhost:1234/api/Forth/CheckLogin?userName=admin&pwd=123456 4 [HttpGet] 5 public string CheckLogin(string userName, string pwd) 6 { 7 if (userName == "admin" && pwd == "123456") 8 { 9 return "ok"; 10 } 11 else 12 { 13 return "error"; 14 } 15 } 16 }
3. 編寫部署代碼
包括端口設定,路由規則的配置,啟動和關閉,代碼如下:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 try 6 { 7 var config = new HttpSelfHostConfiguration("http://localhost:1234"); 8 config.Routes.MapHttpRoute(name: "DefaultApi", 9 routeTemplate: "api/{controller}/{action}/{id}", 10 defaults: new { id = RouteParameter.Optional }); 11 using (var sever = new HttpSelfHostServer(config)) 12 { 13 sever.OpenAsync().Wait(); 14 Console.WriteLine("服務已經成功啟動"); 15 Console.WriteLine("輸入任意字符關閉"); 16 Console.Read(); 17 sever.CloseAsync().Wait(); 18 19 } 20 } 21 catch (Exception ex) 22 { 23 Console.WriteLine(ex.Message); 24 } 25 Console.ReadKey(); 26 } 27 }
特別注意:不能直接在VS里啟動,會報權限不夠的錯誤,正確的使用放在,在Bin文件里,找到Exe程序,以管理員的身份啟動即可。
4. 啟動exe程序,然后用PostMan進行測試:http://localhost:1234/api/Forth/CheckLogin?userName=admin&pwd=123456,正常訪問,結果如下:
!
- 作 者 : Yaopengfei(姚鵬飛)
- 博客地址 : http://www.cnblogs.com/yaopengfei/
- 聲 明1 : 本人才疏學淺,用郭德綱的話說“我是一個小學生”,如有錯誤,歡迎討論,請勿謾罵^_^。
- 聲 明2 : 原創博客請在轉載時保留原文鏈接或在文章開頭加上本人博客地址,否則保留追究法律責任的權利。