zoukankan      html  css  js  c++  java
  • .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: DbContext
    11     {
    12         protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    13         {
    14             var sqlConnectionStringBuilder = new SqlConnectionStringBuilder
    15             {
    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 reportAPI
    15 {
    16     public class Startup
    17     {
    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                     policy
    36                             .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.Controllers
    10 {
    11     [Route("api/[controller]/[action]")]
    12     [ApiController]
    13     public class ChartDesignController : ControllerBase
    14     {
    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             try
    26             {
    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                 else
    36                 {
    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             try
    53             {
    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             try
    71             {
    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 服务就启动起来了

     

  • 相关阅读:
    HDU 3681 Prison Break 越狱(状压DP,变形)
    POJ 2411 Mondriaan's Dream (状压DP,骨牌覆盖,经典)
    ZOJ 3471 Most Powerful (状压DP,经典)
    POJ 2288 Islands and Bridges (状压DP,变形)
    HDU 3001 Travelling (状压DP,3进制)
    POJ 3311 Hie with the Pie (状压DP)
    POJ 1185 炮兵阵地 (状压DP,轮廓线DP)
    FZU 2204 7
    POJ 3254 Corn Fields (状压DP,轮廓线DP)
    ZOJ 3494 BCD Code (数位DP,AC自动机)
  • 原文地址:https://www.cnblogs.com/lovejunjuan/p/12155795.html
Copyright © 2011-2022 走看看