一、前言
今天在AspNetCore3.1环境中做了一个用户登录页面,在登录页面中有一个功能就是需要后端动态绘制一个验证码图片,防止前端通过机器或爬虫工具模拟自动登录。
在开发机器上(windows10)调试正常,但是部署到centos7容器(容器基础环境mcr.microsoft.com/dotnet/aspnet:3.1)中,验证码一直显示不出来,通过前端调试发现请求500(服务器内部错误)
然后就登录服务器查看容器日志
果然报错“'Gdip’的类型初始化器抛出了一个异常”
代码如下:
/// <summary>
/// 生成验证码
/// </summary>
/// <returns></returns>
public static byte[] ValidateCode(string code)
{
using (var bitmap = new Bitmap(100, 30))
{
using (var gph = Graphics.FromImage(bitmap))
{
gph.FillRectangle(Brushes.White, 0, 0, bitmap.Width, bitmap.Height);
gph.DrawRectangle(new Pen(Color.Black), 1, 1, bitmap.Width - 2, bitmap.Height - 2);
using (Brush bush = new SolidBrush(Color.SteelBlue))
{
gph.DrawString(code, new Font("黑体", 20, FontStyle.Italic), bush, 10, 2);
var random = new Random();
// 画线条
for (int i = 0; i < 5; i++)
{