.NET控制台程序秒变asp.net core站点

    有个.NET控制台程序用来跑定时任务的,但是做好后需求发生变化,跑出的数据结果不能直接使用,数据需要转成json格式通过web接口来调用实现。这个控制台是个单体程序,没有封装,如果新建一个项目的话还得重新搭建框架和编写逻辑;如果能把控制台程序直接改成asp.net core api程序就好了。查阅相关资料发现可以实现,本文将介绍如何实现控制台程序变asp.net core api程序。

1、添加asp.net core包

首先需要添加asp.net core程序包,添加方法跟其他普通包一样。这也是.NET Core之后的模块化改进。添加可以通过nuget手动添加或控制台代码添加,包名是“Microsoft.AspNetCore.App”,添加的代码如下:

install-package Microsoft.AspNetCore.App

2、在main方法中增加AspNetCore支持

在.net6之后控制台程序取消了main方法,当然也可以选择保留。主要是WebApplication组件和中间件组件,代码如下:

#region  网站
var builder = WebApplication.CreateBuilder();
  builder.Services.AddControllers();
 // .AddApplicationPart(Assembly.Load(new AssemblyName(AssemblyName)));
 var app = builder.Build();
 app.UseRouting();


 app.UseEndpoints(endpoints =>
 {
        endpoints.MapDefaultControllerRoute();
  });
  app.Run();
  #endregion

3、增加控制器

新建一个控制器Controllers文件夹,并在文件夹下面新建一个HomeControllers.cs文件。在文件代码中继承ControllerBase接口,并添加一个index测试接口和Controller特性。代码如下:

[ApiController]
    [Route("api/[controller]/[action]")]
    public class HomeController : ControllerBase
    {
        [HttpGet]
        public IActionResult Index()
        {
            return Ok("Hello World");
        }
    }

这样asp.net core api程序就搭建好了,我们用dotnet run来运行一下。效果如下图:

8120c2927dd4ef4eb8e88da0a6adcb74.png

4、封装代码

由于控制台有定时任务,所以把在main方法中增加的AspNetCore支持封装起来。关键代码如下:

public class WebApiInit : IWebApiInit
    {
        public void WInit()
        {
            var builder = WebApplication.CreateBuilder();
            builder.Services.AddControllers();
               // .AddApplicationPart(Assembly.Load(new AssemblyName(AssemblyName)));
            var app = builder.Build();
            app.UseRouting();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapDefaultControllerRoute();
            });
            app.Run();
        }
    }
    public interface IWebApiInit
    {
        void WInit();
    }
    
   // 在mian方法中调用封装 这里使用了依赖注入的方法,调用了AspNetCore支持的封装。
var services = new ServiceCollection();
services.AddTransient<IWebApiInit, WebApiInit>();
var serviceProvider = services.BuildServiceProvider();
var initTest = serviceProvider.GetRequiredService<IWebApiInit>();
initTest.WInit();

5、结语

    本文介绍如何在控制台中内嵌运行.NET Core Web APi。希望本文能给你带来收获,大家还有什么好方案吗?欢迎留言讨论。

版权声明:本文来源于网友收集或网友供稿,仅供学习交流之用,如果有侵权,请转告小编或者留言,本公众号立即删除。

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值