

一、開(kāi)發(fā)Asp.Net Core WebApi
說(shuō)明:
1、關(guān)于如何使用.net core,本文不做介紹,由于這方面的文章現(xiàn)在很多。大家可以去博客園或者微軟官方網(wǎng)站根據(jù)文檔教程一步一步學(xué)習(xí)。
2、本項(xiàng)目屬于個(gè)人微信小程序項(xiàng)目。由于后期需要布到小程序平臺(tái)進(jìn)行公測(cè)使用,所以源代碼不公開(kāi)請(qǐng)各位看官見(jiàn)諒。
3、本項(xiàng)目開(kāi)發(fā)環(huán)境及工具:vs2017、MySql5.7、centos7.3
1、項(xiàng)目搭建


2、開(kāi)發(fā)中使用到的第三方插件
2-1、AutoMapper
關(guān)于AutoMapper是什么?請(qǐng)自行百度。這里要說(shuō)的是AutoMapper已經(jīng)支持了
.net core開(kāi)發(fā)啦。使用方法請(qǐng)參考官方文檔。
AutoMapper官方網(wǎng)站
AutoMapper源碼

本項(xiàng)目中示例(定義):
//=============================================================
// Copyright (C) 2017-2100
// CLR版本: 4.0.30319.42000
// 機(jī)器名稱(chēng): YPF-PC
// 命名空間名稱(chēng)/文件名: XiaoDouZi.Invoicing.Utils.AutoMapper/ProdcutCreateMapper
// 創(chuàng)建人: 楊朋飛
// 創(chuàng)建時(shí)間: 2017/7/4 9:55:20
// 我的簡(jiǎn)書(shū): http://www.itdecent.cn/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>
/// 添加商品分類(lèi)
/// </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是什么?請(qǐng)自行百度。這里要說(shuō)的是Autofac已經(jīng)支持了
.net core開(kāi)發(fā)啦。使用方法請(qǐng)參考官方文檔。
Autofac官方網(wǎng)站
官方示例文檔

本項(xiàng)目中示例(Program.cs):

本項(xiàng)目中示例(Startup.cs):

3、開(kāi)發(fā)中遇到的各種坑
3-1、Swagger
關(guān)于Swagger是什么?請(qǐng)自行百度。這里要說(shuō)的是Swagger已經(jīng)支持了
.net core開(kāi)發(fā)啦。使用方法請(qǐng)參考官方文檔。

-
注冊(cè)Swagger中間件


注意生成的注釋文檔路徑和這里填寫(xiě)的要一致。
-
配置Swagger中間件

這里需要注意的是啟用
swagger中間件及配置一定要放在UserMvc之前。
這里需要注意的是啟用swagger中間件及配置一定要放在UserMvc之前。
這里需要注意的是啟用swagger中間件及配置一定要放在UserMvc之前。
重要的事情說(shuō)三遍
-
Controller中的各個(gè)Action必須要有注釋信息、請(qǐng)求的特性

注意:是每個(gè)Action都必須要有注釋信息和請(qǐng)求特性。如果不添加這些,就會(huì)導(dǎo)致
swagger報(bào)錯(cuò)。
二、發(fā)布Asp.Net Core WebApi
1、發(fā)布項(xiàng)目
-
命令方式
- 打開(kāi)項(xiàng)目的根目錄
- 按住Shift+右鍵
- 在此打開(kāi)命令行
- 在命令行中執(zhí)行下面這句話
dotnet publish
-
vs2017工具
右鍵點(diǎn)擊WebApi站點(diǎn)→發(fā)布

2、配置運(yùn)行環(huán)境
-
安裝.net core sdk
-
安裝MySql
安裝參考博文
注意問(wèn)題:
1、博文中第四部中的命令存在問(wèn)題,我已經(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ò)問(wèn)題,請(qǐng)看下面的解答。

這是由于安裝過(guò)程中有如上報(bào)錯(cuò)。說(shuō)明缺少依賴(lài)包。
解決方法
yum install numactl -y
yum install libaio -y
yum install perl -y
-
安裝Nginx
-
安裝jexus
- 打開(kāi)https://www.linuxdot.net/

- 安裝官方的手冊(cè)進(jìn)行安裝。 參考官方手冊(cè)
jexus和Nginx可以二選一,他們都是通過(guò)反向代理的方式來(lái)是Asp.Net Core WebApi來(lái)運(yùn)行。
2-1、騰訊云服務(wù)器申請(qǐng)
騰訊云、阿里云、xxx云都可以。我這里申請(qǐng)的是騰訊云,操作系統(tǒng)選擇centos7.3 x64。由于我沒(méi)有申請(qǐng)?jiān)茢?shù)據(jù)庫(kù)mysql,所以自己安裝了mysql數(shù)據(jù)庫(kù)。具體步驟上面已經(jīng)介紹了。

2-2、測(cè)試運(yùn)行
- 進(jìn)入到網(wǎng)站部署目錄
cd /var/www/default/publish_XiaoDouZi
- 執(zhí)行命令
dotnet XiaoDouZi.Invoicing.WebApi.dll
- 設(shè)置該進(jìn)程為后臺(tái)進(jìn)程(由于我們關(guān)閉了shell后,網(wǎng)站服務(wù)也會(huì)跟著關(guān)閉,所以需要將其設(shè)置為后臺(tái)進(jìn)程)
nohup dotnet XiaoDouZi.Invoicing.WebApi.dll &