• webapi------宿主程序


    业务场景:

    公司的容器程序需要给前端暴露接口但是代码里面又不想写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
            }
        }
    }
  • 相关阅读:
    Button 的CommandName 用法
    如何循序渐进向DotNet架构师发展
    用sqlserver进行分布式查询(链接服务器)(转)
    关于.resx
    OO设计原则总结
    为ASP.NET 2.0网站生成唯一程序集
    依赖倒置、控制反转和依赖注入辨析(转)
    通过http地址获取页面内容
    Sql同表去除重复
    动态启动WCF服务
  • 原文地址:https://www.cnblogs.com/macT/p/11183539.html
Copyright © 2020-2023  润新知