一、開發(fā)Asp.Net Core WebApi
說明:
1、關(guān)于如何使用.net core,本文不做介紹,由于這方面的文章現(xiàn)在很多。大家可以去博客園或者微軟官方網(wǎng)站根據(jù)文檔教程一步一步學(xué)習(xí)。
2、本項(xiàng)目屬于個(gè)人微信小程序項(xiàng)目。由于后期需要布到小程序平臺進(jìn)行公測使用,所以源代碼不公開請各位看官見諒。
3、本項(xiàng)目開發(fā)環(huán)境及工具:vs2017、MySql5.7、centos7.3
1、項(xiàng)目搭建
2、開發(fā)中使用到的第三方插件
2-1、AutoMapper
關(guān)于AutoMapper是什么?請自行百度。這里要說的是AutoMapper已經(jīng)支持了
.net core
開發(fā)啦。使用方法請參考官方文檔。
AutoMapper官方網(wǎng)站
AutoMapper源碼
本項(xiàng)目中示例(定義):
//=============================================================
// Copyright (C) 2017-2100
// CLR版本: 4.0.30319.42000
// 機(jī)器名稱: YPF-PC
// 命名空間名稱/文件名: XiaoDouZi.Invoicing.Utils.AutoMapper/ProdcutCreateMapper
// 創(chuàng)建人: 楊朋飛
// 創(chuàng)建時(shí)間: 2017/7/4 9:55:20
// 我的簡書: http://www.lxweimin.com/u/40fb2e2a8047
//==============================================================
using AutoMapper;
using System;
using System.Collections.Generic;
using System.Text;
using XiaoDouZi.Invoicing.Dto;
using XiaoDouZi.Invoicing.Model;
namespace XiaoDouZi.Invoicing.Utils.AutoMapper
{
public class CategoryCreateMapper
{
public static IMapper CreateMapper()
{
var mapperConfig = new MapperConfiguration(
c =>
{
c.CreateMap<CategoryCreateDto, Category>().ForMember(s => s.Gid, t => t.Ignore());
});
return mapperConfig.CreateMapper();
}
}
}
本項(xiàng)目中示例(使用):
/// <summary>
/// 添加商品分類
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> Post(CategoryCreateDto dto)
{
var s = CategoryCreateMapper.CreateMapper().Map<CategoryCreateDto, Category>(dto);
return await this._categoryService.AddAsync(s) ?
Json(new { code = 200, message = Resource.ResponseMessage.AddCategory }) :
Json(new { code = 200, message = Resource.ResponseMessage.Fail });
}
2-2、Autofac
關(guān)于Autofac是什么?請自行百度。這里要說的是Autofac已經(jīng)支持了
.net core
開發(fā)啦。使用方法請參考官方文檔。
Autofac官方網(wǎng)站
官方示例文檔
本項(xiàng)目中示例(Program.cs):
本項(xiàng)目中示例(Startup.cs):
3、開發(fā)中遇到的各種坑
3-1、Swagger
關(guān)于Swagger是什么?請自行百度。這里要說的是Swagger已經(jīng)支持了
.net core
開發(fā)啦。使用方法請參考官方文檔。
-
注冊Swagger中間件
注意生成的注釋文檔路徑和這里填寫的要一致。
-
配置Swagger中間件
這里需要注意的是啟用
swagger
中間件及配置一定要放在UserMvc
之前。
這里需要注意的是啟用swagger
中間件及配置一定要放在UserMvc
之前。
這里需要注意的是啟用swagger
中間件及配置一定要放在UserMvc
之前。
重要的事情說三遍
-
Controller
中的各個(gè)Action
必須要有注釋信息、請求的特性
注意:是每個(gè)Action都必須要有注釋信息和請求特性。如果不添加這些,就會導(dǎo)致
swagger
報(bào)錯(cuò)。
二、發(fā)布Asp.Net Core WebApi
1、發(fā)布項(xiàng)目
-
命令方式
- 打開項(xiàng)目的根目錄
- 按住Shift+右鍵
- 在此打開命令行
- 在命令行中執(zhí)行下面這句話
dotnet publish
-
vs2017工具
右鍵點(diǎn)擊WebApi站點(diǎn)
→發(fā)布
2、配置運(yùn)行環(huán)境
-
安裝.net core sdk
-
安裝MySql
安裝參考博文
注意問題:
1、博文中第四部中的命令存在問題,我已經(jīng)正確的命令貼在下面。
rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.18-1.el7.x87_64.rpm
2、關(guān)于執(zhí)行這些命令時(shí)候報(bào)錯(cuò)問題,請看下面的解答。
這是由于安裝過程中有如上報(bào)錯(cuò)。說明缺少依賴包。
解決方法
yum install numactl -y
yum install libaio -y
yum install perl -y
-
安裝Nginx
-
安裝jexus
- 打開https://www.linuxdot.net/
- 安裝官方的手冊進(jìn)行安裝。 參考官方手冊
jexus和Nginx可以二選一,他們都是通過反向代理的方式來是Asp.Net Core WebApi來運(yùn)行。
2-1、騰訊云服務(wù)器申請
騰訊云、阿里云、xxx云都可以。我這里申請的是騰訊云,操作系統(tǒng)選擇centos7.3 x64。由于我沒有申請?jiān)茢?shù)據(jù)庫mysql,所以自己安裝了mysql數(shù)據(jù)庫。具體步驟上面已經(jīng)介紹了。
2-2、測試運(yùn)行
- 進(jìn)入到網(wǎng)站部署目錄
cd /var/www/default/publish_XiaoDouZi
- 執(zhí)行命令
dotnet XiaoDouZi.Invoicing.WebApi.dll
- 設(shè)置該進(jìn)程為后臺進(jìn)程(由于我們關(guān)閉了shell后,網(wǎng)站服務(wù)也會跟著關(guān)閉,所以需要將其設(shè)置為后臺進(jìn)程)
nohup dotnet XiaoDouZi.Invoicing.WebApi.dll &