之前同仁反应使用 Google 的 QR Code API 有时会无法使用,查了相关资讯后,有了想透过撰写这个 API 来学习 C# 的想法,花了些时间摸索,还真被我搞出来。此 API 的功能为在网址输入值,便可直接在浏览器产生 QRCode 的图片,以下会以第一次撰写 ASP.NET Core / C# 的新手角度来说明。
新增专案
「档案 → 新增 → 专案」,上面的筛选类别选择「C#, 窗口, 网页API」,
选择 ASP.NET Core Web API。
输入一个专案名称。
这边我有勾选「使用控制器」,感觉程式稍微分类一下比较清楚。
「启用 OpenAPI 支援」则是取消勾选,因为用不到。
安装 QRCoder 套件
「专案 → 管理 NuGet 套件」。
搜尋 “二维码编码器”,并安装。
新增 Controller
在 [控制器] 目录按右键,选择「加入 → 控制器」。
选择 「API」项目中的「API 控制器 – 空白」。
再次选择「API 控制器 – 空白」。
撰写程式
在刚刚新增的 Controller 撰写程式:
// using Microsoft.AspNetCore.Http; // 系統產生,沒用到。 using Microsoft.AspNetCore.Mvc; using QRCoder; namespace QRCode.Controllers { [Route("[controller]")] // 指定路徑為 xxx.com/QRCodeGen, // 不指定時,會是 xxx.com/。 // [ApiController] // 系統產生,沒用到。 public class QRCodeGenController : ControllerBase { [HttpGet] [Route("{qrText}")] public IActionResult GetQrCode(string qrText) { byte[] image = PngByteQRCodeHelper.GetQRCode(qrText, QRCodeGenerator.ECCLevel.Q, 10); return File(image, "image/png"); } } }
测试结果
选择「侦错 → 开始侦错」。
在网址列最后面输入 Controller 的名称以及要产生 QRCode 的值,按下 Enter 后即可以产生 QRCode图片。
其他补充
这支程式是在半年前写的,印象有遇到几个状况而陆续装了以下套件,供参考:
ASP.NET Core 执行阶段 6.0.36
- x64 (开发端): aspnetcore-runtime-6.0.28-win-x64.exe
- 托管捆绑包 (IIS边缘): dotnet-hosting-6.0.28-win.exe
《参考连结》
[…] QRCode 產生器的 API 後,摸不著頭緒要怎麼把程式變成 IIS […]