标签:.net core

.NET CORE 下通过 SmtpClient 发送邮件

通过本文你可以实现:使用 .NET SmtpClient 来发送邮件

  • 基础使用:仅含有邮件内容,无附件;
  • 发送含有附件的邮件;
  • 以及抄送等功能。

通过使用 epplus 来动态生成 excel 表单

Summary:

  • 本文旨在说明通过建立本地模型类,通过 EPPlus,来统一生成 excel,模型类见下方代码块。
    • 适合需要动态生成整个 excel 表单的业务。
    • 如果无需动态生成,则可以直接给出物理excel文件硬编码即可。
  • 因涉及到公司业务,这里仅给出和业务无关部分代码。

环境说明:

在 .net core 2.1 和 3.1 中使用 autofac

通过本文你可以获得如何用 autofac 替换 .NET CORE(2.1,3.1) 默认 IOC 容器。

生命周期说明

  • 每个依赖一个实例(Instance Per Dependency) (默认) —-InstancePerDependency()
  • 单一实例(Single Instance) 单例 —-SingleInstance()
  • 每个生命周期作用域一个实例(Instance Per Lifetime Scope)—-InstancePerLifetimeScope()
  • 每个匹配的生命周期作用域一个实例(Instance Per Matching Lifetime Scope)—-InstancePerMatchingLifetimeScope()
  • 每个请求一个实例(Instance Per Request) asp.net web请求—-InstancePerRequest()
  • 每次被拥有一个实例(Instance Per Owned) —-InstancePerOwned()

注册方式

  • 反射
  • 使用实例
  • lambda 表达式

示例代码说明:

在 worker service 中使用 quartz.net

  • 以下示例基于 Quartz.Net 3.0.7(在最新的 3.1-beta2 中已经包含了支持 Microsoft DI 的方法)

在 worker service 中,通过官网示例,会发现 quartz.net 并未生效,究其原因系 DI 未注入导致,原生 quartz.net(3.0.7)是通过 CreateInstance 来创建实例的,本文旨在解决在 Worker Service、Console 中使用 quartz.net 无效的问题。

项目结构如下:

初始化

JobSchedule.cs

用来配置 Job,如果需要更多配置,可以扩展该类。

public class JobSchedule
{
    public JobSchedule(Type jobType, string cronExpression)
    {
        JobType = jobType;
        CronExpression = cronExpression;
    }

    public Type JobType { get; }
    public string CronExpression { get; }
}

基于 .NET CORE 3.1 提供的 worker service 来创建 windows 服务

.NET CORE 3.1 提供了 worker service 这么一个模板,可以方便开发者来创建”windows 服务程序“(同样可发布于 linux)。本篇以 centos 7.6 为发布环境,简要说明如何使用 worker service 来创建服务,并部署发布到 centos 中。

你可以通过以下命令来查看本地安装的 .net core 环境:

dotnet   --version  # 笔者为 3.1.301

你可以通过以下命令来查看是否含有 worker service 模板:

dotnet  new  -l

安装

方式1:命令行形式安装

你可以通过如下命令在当前解决方案中安装:

使用 .net core 自定义项目模板

场景:日常工作中,你可能会碰到需要新建一个全新的解决方案的情况(如公司新起了一个新项目,需要有全新配套的后台程序),如果公司内部基础框架较多、解决方案需要DDD模式等,那么从新起项目到各种依赖引用到能实际可用,一大堆的配置都需要重新设定、测试,耗时耗力,根据项目的大小,往往可能需要 1-2 小时甚至更久。

在 .net core 之前,虽然有相关的解决方法可以实现“项目模板”这个需求,但在具体操作时很不方便,从 .net core 1.0 开始,提供了“模板引擎”,增加了 dotnet new –install(-i) 命令和选项,通过该命令,可以让你方便的创建属于你自己的项目模板。

通过本文你可以了解和掌握:

  1. 掌握如何将一个现有解决方案中的项目作为项目模板。
    1. 掌握如何在本地创建项目模板并安装和使用。
    2. 掌握如何将本地模板打包成 nuget 包,并通过包 id 进行安装使用该模板。
  2. 了解、掌握简单的 dotnet 和 nuget 命令及其配置。(windows 和 mac 会做差异说明)

准备工作

本次项目结构如下(DDD):

如何在.NET CORE 下开发 "windows 服务"

在.NET Core中并没有像 .NET Framework下的 “windows服务”可创建,但我们依然可以通过powershell这个工具,将.NET CORE 下创建的项目以”windows服务”的形式来寄宿运行。

0.新建项目

新建、使用一个 web 应用程序 项目即可

本次示例所用 .NET CORE 版本为 2.1

项目结构如下:

优雅通过HttpClientFactory使用HttpClient

本文主要讲解如何优雅的在 .NET CORE 中使用 HttpClient ,对比了下 Framework 和 Core 中的 Http 客户端。

提供了几个封装 HttpClient 的思路和经验。

看完此文,基本可以自行封装一个客户端

HttpClient 日常使用及坑点:

在C#中,平时我们在使用 HttpClient 的时候,会将 HttpClient 包裹在 using 内部进行声明和初始化,如:

在.net core中使用配置文件的几个示例和方法

本文基于 .net core 2.2

主要包含的示例:

  • 通过DI进行使用配置文件
    • 如何在 ASP.NET 中使用配置文件
  • 直接硬编码使用配置文件
    • 如何在控制台中使用配置文件

ASP.NET MVC 示例

asp.net mvc 已经内部实现了对配置 appsettings.json 文件的使用, builder 默认支持热更新。

使用示例:

假设 appsettings.json
内容为: