摘自:倉儲大叔web
宿主一詞咱們不會陌生,它能夠看做是一個基礎設施,它爲一些服務和功能提供最底層的支持,如你的web應用程序能夠運行在iis或者apache上,而這兩個東西就是web應用程序的宿主,而今天說的自主宿主SelfHost就是說,它能夠本身去監聽本身的服務,如你能夠把一個web應用程序宿主到一個console控制檯程序上,或者把一個webApi宿主到一個console或者windowService上,這都是能夠的。apache
public class SelfHostServer { private static HttpSelfHostServer _server = null; public static void Start() { Assembly.Load("YMAccess"); //手工加載某個api程序集的controller var config = new HttpSelfHostConfiguration("http://localhost:1111"); config.Routes.MapHttpRoute("default1", "{controller}"); config.Routes.MapHttpRoute("default", "{controller}/{action}", new { action = RouteParameter.Optional }); config.MaxReceivedMessageSize = 2147483647; config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always; _server = new HttpSelfHostServer(config); try { _server.OpenAsync().Wait(); } catch (Exception ex) { throw; } Console.WriteLine("Server is opened"); } }
public class ProductsController : ApiController { public string GetName() { return "hello world"; } public int GetAge() { return 11; } public bool GetSex() { return true; } }
注意的坑: 這個訪問都是 根據路由配置來的,以前隨便設置了一個路由,致使老是訪問出錯,因此路由必定要看好,好比咱們若是設置的路由爲 default", "{controller}/{id} 這樣咱們方法定義的時候就要以id爲參數名,這樣才能正確識別。api