WebApi系列~自主宿主HttpSelfHost的實現

 

摘自:倉儲大叔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");

        }
    }

三   web api代碼

  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

相關文章
相關標籤/搜索