.net core试水

概述

大概记录下我如何第一次使用.net core搭建一个api,由于最近.net core比较火,我也尝试着使用.net core做了一个小功能

本文主要包括

1.环境配置

2.程序编写

3.程序部署

主要参考:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.1&tabs=visual-studio

1、环境配置

想要使用.net core3.1 第一个问题是更新VS,更新过程中遇到报错

VS_InstallerShell.exe has an invalid certificate. Please ensure the appropriate Microsoft certificates are installed

网上很多方法试过没有效果,最后在哪里(自己也忘记了)找到了解决方案,安装两个windows补丁,附上补丁编号和下载地址

https://www.catalog.update.microsoft.com/Home.aspx

KB4474419
kb4490628

2.程序编写

安装了最新vs以后,点击新建项目,创建3.1 .net core API项目,创建以后可以直接运行,会有一个天气预报的示例

使用Nuget安装Microsoft.EntityFrameworkCore.SqlServr,ef我虽然没有在实际项目中使用过,不过陆陆续续知道点,今天顺便试试

2.1 创建数据库上下文类

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Threading.Tasks; 5 using Microsoft.Data.SqlClient; 6 using Microsoft.EntityFrameworkCore; 7  8 namespace reportAPI 9 {10 public class ChartDesignContenxt: DbContext11  {12 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)13  {14 var sqlConnectionStringBuilder = new SqlConnectionStringBuilder15  {16 DataSource = "*.*.*.*",17 InitialCatalog = "*",18 UserID = "sa",19 Password = "123456"20  };21  optionsBuilder.UseSqlServer(sqlConnectionStringBuilder.ConnectionString);22 23 base.OnConfiguring(optionsBuilder);24  }25 public DbSet<chartDesign> chartDesigns { get; set; }26  }27 }

2.2 在startup.cs类中注入数据库上下文类,添加跨域配置

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Threading.Tasks; 5 using Microsoft.AspNetCore.Builder; 6 using Microsoft.AspNetCore.Hosting; 7 using Microsoft.AspNetCore.HttpsPolicy; 8 using Microsoft.AspNetCore.Mvc; 9 using Microsoft.Extensions.Configuration;10 using Microsoft.Extensions.DependencyInjection;11 using Microsoft.Extensions.Hosting;12 using Microsoft.Extensions.Logging;13 14 namespace reportAPI15 {16 public class Startup17  {18 public Startup(IConfiguration configuration)19  {20 Configuration = configuration;21  }22 23 public IConfiguration Configuration { get; }24 25 // This method gets called by the runtime. Use this method to add services to the container.26 public void ConfigureServices(IServiceCollection services)27  {28 //允许一个或多个具体来源:29 services.AddCors(options =>30  {31 // 配置跨域32 options.AddPolicy("cors", policy =>33  {34 // 设定允许跨域的来源,有多个的话可以用 `,` 隔开35  policy36  .AllowAnyOrigin()37  .AllowAnyHeader()38  .AllowAnyMethod();39  });40  });41 42 services.AddScoped<IPMSDbContenxt>(_ => new IPMSDbContenxt()); 43 services.AddScoped<ChartDesignContenxt>(_ => new ChartDesignContenxt()); //注入数据库上下文类44 45  services.AddControllers();46  }47 48 // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.49 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)50  {51 if (env.IsDevelopment())52  {53  app.UseDeveloperExceptionPage();54  }55 56  app.UseHttpsRedirection();57 58  app.UseRouting();59 60 app.UseCors("cors"); //使用跨域61 62  app.UseAuthorization();63 64 app.UseEndpoints(endpoints =>65  {66  endpoints.MapControllers();67  });68  }69  }70 }

 

2.3 创建控制器,一共三个方法,获取列表,更新一条记录,获取一条记录

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Threading.Tasks; 5 using Microsoft.AspNetCore.Http; 6 using Microsoft.AspNetCore.Mvc; 7 using Microsoft.EntityFrameworkCore; 8  9 namespace reportAPI.Controllers10 {11 [Route("api/[controller]/[action]")]12  [ApiController]13 public class ChartDesignController : ControllerBase14  {15 private readonly ChartDesignContenxt _context;16 17 public ChartDesignController(ChartDesignContenxt context)18  {19 _context = context;20  }21 22  [HttpPost]23 public IActionResult Save(CommonFilter filter)24  {25 try26  {27 //var temp = entity.data.ToString();28 chartDesign model = new chartDesign();29 model.designName = filter.field1;30 model.designContent = filter.data.ToString();31 if (filter.key == -1)32  {33 _context.Add<chartDesign>(model);34  }35 else36  {37 model.designId = filter.key;38 _context.Update<chartDesign>(model);39  }40  _context.SaveChanges();41 return Ok("保存成功");42  }43 catch(Exception ex)44  {45 return Ok(ex.Message);46  }47 48  }49  [HttpPost]50 public IActionResult Get(CommonFilter filter)51  {52 try53  {54 chartDesign entity = _context.chartDesigns.Find(filter.key);55 if (entity == null)56  {57 return NotFound();58  }59 60 return Ok(entity);61  }62 catch(Exception ex)63  {64 return Ok(ex.Message);65  }66  }67  [HttpPost]68 public IActionResult GetList()69  {70 try71  {72 string sql = "select * from chartDesign";73 List<chartDesign> list = _context.chartDesigns.ToList(); //.FromSqlRaw(sql).ToList();74 return Ok(list);75  }76 catch (Exception ex)77  {78 return Ok(ex.Message);79  }80  }81  }82 }

一个增删改完成

3.部署到服务器

部署比较简单,直接拷贝bin下面的内容,然后双击  项目名.exe 服务就启动起来了

 

 

 

 

 

相关文章