tnblog
首页
视频
资源
登录

控制台应用程序托管webapi

7374人阅读 2019/3/19 10:58 总访问:144525 评论:2 收藏:0 手机
分类: C#

在没有iis的情况下,webapi是可以自托管的

so,我们从写一个webapi程序开始:

1、创建一个控制台应用程序,然后在控制台应用程序里面"假装”写一个webapi接口:

  1. using EasyTeam.Problem.Web.Api.Models;
  2. using SpeechLib;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Speech.Synthesis;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Web.Http;//此引用需额外引用
  10. namespace EasyTeam.ViocePlay
  11. {
  12.   public class VoicePlayController:ApiController
  13.   {
  14.     /// <summary>
  15.     /// 假装写一个接口
  16.     /// </summary>
  17.     /// <param name="name"></param>
  18.     /// <returns></returns>
  19.     [HttpGet]
  20.     public string GetName(string name)
  21.     {
  22.        return "Hello ! "+ name;
  23.     }
  24.   }
  25. }

嗯,现在我们有一个Controller了

二、接着就差个路由了

人家是在Global里面注册路由的啊,咱们这玩意没有Global啊!没关系,咱们有Main函数啊,都是程序入口,也一样对吧?

那就开始:

  1. using EasyTeam.Core.Log;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Configuration;
  5. using System.Linq;
  6. using System.Net.Http;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Web.Http;
  10. using System.Web.Http.SelfHost;
  11. namespace EasyTeam.ViocePlay
  12. {
  13.   class Program
  14.   {
  15.      /// <summary>
  16.      /// 控制台应用程序托管webapi
  17.      /// </summary>
  18.      /// <param name="args"></param>
  19.      static void Main(string[] args)
  20.      {
  21.          try
  22.          {
  23.              //注册路由
  24.              var config = new HttpSelfHostConfiguration("http://localhost:8080");//端口,可以把这个端口配置写到配置文件里面
  25.              config.Routes.MapHttpRoute(
  26.                      "API Default",
  27.                      "api/{controller}/{id}",
  28.                      new
  29.                      {
  30.                         id = RouteParameter.Optional
  31.                      });
  32.              using(HttpSelfHostServer server = new HttpSelfHostServer(config))
  33.              {
  34.                 server.OpenAsync().Wait();//需以管理员身份运行,否则会报没有访问权限错误!
  35.                 Console.WriteLine("Server Listening at 8080...");
  36.                 while (true)
  37.                 {
  38.                     Console.ReadKey();
  39.                 }
  40.              }
  41.          }
  42.          catch (Exception ex)
  43.          {
  44.              Console.WriteLine(ex.Message);
  45.              FileLog.SaveLog(ex, "messageApi.err.log");
  46.              throw;
  47.          }
  48.       }
  49.   }
  50. }


三、接下来就是运行控制台程序了,嗯。。。再测试一下

运行效果:

测试效果:

    ok !so (づ ̄3 ̄)づ╭?~


评价

风清月

2019/3/19 11:37:45

牛掰o( ̄▽ ̄)d ,这种控制台的效果看着就是要比有界面的高端一些

雨雨雨雨辰

2019/3/19 13:48:29

66666

为什么要使用webapi而不直接使用controller

彼年豆蔻,谁许谁地老天荒。webapi能做的事情,controller都能做,为什么要使用webapi而不直接使用controller呢?这就好比...

webapi转json格式

创建WebApi项目时出现的xml格式,每次都去转换比较麻烦在Global设置全局输出json格式://直接xml干掉为json GlobalConfigu...

.net core上传图片,文件。webapi 上传图片文件

上传图片的前台代码都完全一样,直接来贴后台的代码吧publicActionResultUploadImage(List&lt;IFormFile&gt;upfile) { ...

使用swagger创建webapi文档描述---详解

在前后端分离开发中,作为后端如何给前端提供有效直观的接口文档呢?没错,就是使用swagger 俗称“丝袜哥”教程:一、首先...

通过PlUpload控件配合webapi接口完成压缩上传文件

最近一段时间都在使用PlUpload做文件上传的功能,研究过后感觉使用起来体验还是比较好的,不过网上的资料很多都记录的很简...

webapi传递大数据

在接口中传输图片进制流或BASE64字符串时,使用FormUrlEncodedContent处理参数时,可能会因为参数太长导致异常无效的URL:U...

AJAX调用webapi上传图片或文件。设置token,设置Authorization Bearer

AJAX调用webapi上传图片或文件,并返回刚上传的文件名。废话不多说直接贴代码吧html相关:&lt;!DOCTYPEhtml&gt; &lt;html&...

webapi与rpc区别

首先说rpc,rpc的定义是远程过程调用,通俗讲就是客户端通过网络远程调用服务端的方法,比如一个用java写的method。rpc是基...

.NET HttpClient和webapi相关的东东先记录一点。传递Authorization headertoken

get请求传递Authorization header,tokenstringurl=&quot;你请求的url&quot;; stringtoken=&quot;yourtoken&quot;; Http...

webapi报错:Attribute routes with the same name 'Get' must have the same template

是因为 asp.net core 中默认创建的 api controller 中的 Get(id) Action的属性都是[HttpGet(&quot;{id}&quot;, Name = &quo...

net core webapi版本控制

webapi的版本控制好处很多,要实现其实也比较简单。在webapi中根据不同的版本创建文件夹。然后在不同的api里边添加不同的路...

net core webapi路由

如下我们可以通过路由传递两个参数请求地址参考如下: https://localhost:5001/api/home/aojiancc2/2622最后两个可以作为参...

.net webapi Newtonsoft.Json返回需要的字段,忽略某些字段,修改字段名,动态返回需要的字段等

有时候我们在写webapi的时候,不想把正常用的对象所有字段都返回,我们需要进行一些筛选,忽略某些字段,大概说一下几种方法...

.net core webapi json相关,全局配置,时间格式化首字母小写等

在ConfigureServices中可以进行全局json配置,例如,全局处理一下事件格式问题services.AddMvc(option=&gt; { //option.F...

net core webapi运用自定义json格式

接上一篇net core api json相关,全局配置,时间格式化,首字母小写等:http://www.tnblog.net/aojiancc2/article/details/2...
Decorating heart
排名
22
文章
14
粉丝
21
评论
27
腾讯防水墙
赖成龙 : 学长你有下载好的js文件吗
使用 JSON WEB TOKEN (jwt) 验证
饰心 : 由于最近换了新的工作环境,还在挖煤中。后续会增加博客更新频率。
腾讯防水墙
饰心 : @剑轩,快去给tnblog弄一个
使用select2实现下拉框中显示图片
剑轩 : 秀啊.....,飞常不错
使用select2实现下拉框中显示图片
饰心 : 嗯~刚好差不多下班
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
金风玉露一相逢,便胜却人间无数。