业务场景:

公司的容器程序需要给前端暴露接口但是代码里面又不想写webapi项目工程就用到了宿主可以达到webapi的效果

1、owin实现

2、其他实现

 测试实现如下

1、新建一个控制台程序

2、新建一个Controller文件并继承ApiController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;

namespace ConsoleApplication1
{
    public class BlahController : ApiController
    {
        [HttpGet]
        public string Date()
        {
            return DateTime.Today.ToString("yyyy/MM/dd");
        }
    }
}

3、实现调用

3.1实现调用一

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.SelfHost;

namespace ConsoleApplication1
{
    class Program
    {       
        static void Main(string[] args)
        {          
            #region http://localhost:9001/Blah/Date
            //指定URL
            var config = new HttpSelfHostConfiguration("http://localhost:9001");
            //设定路由
            config.Routes.MapHttpRoute("API", "{controller}/{action}/{id}", new { id = RouteParameter.Optional });
            using (var httpServer = new HttpSelfHostServer(config))
            {
                //OpenAsync()屬非同步呼叫,加上Wait()則等待開啟完成才往下執行
                httpServer.OpenAsync().Wait();
                Console.WriteLine("Web API host started...");
                string line = null;
                do
                {
                    line = Console.ReadLine();
                }
                while (line != "exit");
                //結束链接
                httpServer.CloseAsync().Wait();
            }
            #endregion

        }
    }
}

3.2实现调用二

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.SelfHost;

namespace ConsoleApplication1
{
    class Program
    {       
        static void Main(string[] args)
        {
            #region http://localhost:9001/api/Blah/Date
            HttpSelfHostConfiguration config = new HttpSelfHostConfiguration("http://localhost:9001");
            config.Routes.MapHttpRoute(
                name: "API",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional });
            using (HttpSelfHostServer server = new HttpSelfHostServer(config))
            {
                server.OpenAsync().Wait();
                Console.WriteLine("Web API is started now");
                Console.ReadLine();
            }
            #endregion
        }
    }
}

 

posted on 2019-07-14 11:18  红磨坊后的白桦树  阅读(343)  评论(0编辑  收藏  举报