
.Net Core
文章平均质量分 53
surfirst
长期就职于全球化的公司团队。领导的团队是公司第一个转型为敏捷开发模式的团队,成功推动整个部门转型为敏捷开发模式。协调全球架构师,共同构建公司的参考架构。持续的创新者,拥有6项美国专利,为树立中国团队的创新形象建立基础。
展开
-
举例说明 .Net Core 单元测试中 xUnit 的 [Theory] 属性的用法
在这篇文章中,我们探讨了如何使用 xUnit 的 `[Theory]` 属性来运行参数化测试。通过示例展示了如何使用 `[InlineData]`、`[MemberData]` 和 `[ClassData]` 提供不同的数据源,从而简化测试代码并提高测试覆盖率。这些方法有助于在 .NET 应用程序中进行更有效的单元测试。原创 2024-10-05 18:08:24 · 638 阅读 · 0 评论 -
如何使用 .Net Core 实现数据库迁移 (Database Migration)
当我们在编写基于数据库的应用程序时,随着需求的增加和改变,我们需要升级我们的数据库,变更数据库表的字段,当我们的系统的不同版本被部署到了不同的客户那里,在需要给客户升级时,我们如何实现数据库模式 (schema) 的自动升级呢?原创 2022-11-15 21:56:04 · 3640 阅读 · 0 评论 -
asp.net core 6 如何避免 CORS 错误
本文说明了如何在 asp.net core 6 中避免 CORS 错误,也就是给 service 加上 cors 功能,然后在 builder 中允许任何源,标头和方法。原创 2022-08-22 22:41:20 · 1311 阅读 · 0 评论 -
构建 Dotnet Docker 镜像遇到 Program does not contain a static ‘Main‘ method suitable for an entry point
本文解决了 visualstudio 默认创建的 dockerfile 不能工作的问题。原创 2022-07-03 11:15:56 · 1044 阅读 · 1 评论 -
Dotnet Nuget 设置代理解决源不可访问的问题
本文介绍了如果通过代理解决 nuget 源不可被访问的问题。原创 2022-07-02 18:41:09 · 1770 阅读 · 0 评论 -
ASP.NET Core 如何监听指定的IP或者端口
使用 ASP.NET CORE 编写 RESTful API 服务默认监听的是 localhost,我们可以通过修改 appsettings.json 来让我们的服务监听服务器上指定的或者所有的IP。加入下面的内容到 appsetings.json。实例如下:{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Li原创 2021-04-02 22:01:10 · 2361 阅读 · 1 评论 -
如何使用 .Net Core HttpClient调用RESTful API
下面的代码示例展示如何使用.Net Core HttpClient 调用 RESTful APIPost 请求var payload = JsonSerializer.Serialize(request, options);HttpContent content = new StringContent(payload, Encoding.UTF8, "application/json");HttpClient client = new();var response = await client.原创 2021-04-01 22:01:46 · 1184 阅读 · 0 评论 -
.Net Core 如何在 RSA 中使用字符串形式的私钥 (Private Key)
很多时候我们得到的私钥只是一个字符串,要是查询 .Net Core 的文档,我们看不到如何能够让 RSA 使用这种形式的私钥。下面的示例代码能解决这个问题:string GenerateSignature(string md5, string key){ using RSA rsa = RSA.Create(); rsa.ImportRSAPrivateKey(Convert.FromBase64String(key), out _); var buf = rsa.Encrypt原创 2021-03-12 20:48:42 · 1542 阅读 · 0 评论 -
Java 和 C# 的 HashSet 处理数组上的异同
最近在做算法题的时候发现同样是使用 HashSet,Java 的解法有效但是 c# 的解法就是错的。问题就出在 List 类型的 HashCode 的计算上。我们来看下面的 Java 和 C# 代码的输出结果:Java 使用 HashSet 存储 int[] 以及 ArrayList:public class ArrayHashsetTest { public static void Run() { // int arrays int[] nums1 = {1,原创 2021-01-31 11:32:39 · 401 阅读 · 0 评论 -
.Net 中 ManualResetEvent 和 AutoResetEvent 的区别
在 .Net 多线程中可以使用 ManualResetEvent 和 AutoResetEvent 来协调不同的线程的运行。文档中说这两个类都可以通过 set 方法释放信号,等待信号的线程可以通过捕获信号来控制线程的运行,和 ManualResetEvent 不同的是 AutoResetEvent 的 set 方法被调用以后,它会自动 reset。那么这个自动 reset 有什么用处呢?简单的说 AutoResetEvent 的 set 和 reset 是一个原子操作,如果有多个线程等待 AutoRese原创 2021-01-12 18:58:35 · 528 阅读 · 0 评论 -
ASP.NET Core Swagger Open API 如何给Controller级增加参数
我们知道我们可以给 ASP.NET 的 controller 的每个方法增加参数,这样在 Swagger 页面我们就可以设置好参数,然后进行测试,但是有些参数我们会要求它出现在每个公开的 controller 方法中。我们固然可以给每个方法都增加一个参数设置,但是这样做会增加我们很多工作量。比如在下面的 TicketController 中,我们希望给每个方法都加一个 siteId 类型的 header 参数,来指名这个方法是发给哪个 site 的。一种方法是给 Purchase 和 Print 方法各增原创 2020-12-24 11:05:56 · 1103 阅读 · 0 评论 -
龙芯开始支持主流开发栈: Java, .Net以及NodeJS
最近有媒体报道龙芯发布了.Net软件,好奇地点进去看了看。原来是龙芯社区发布了.Net Core 3.1的运行时 (Runtime) 和开发包 (SDK)。上龙芯开源社区可以看到到今年12月份为止,程序员已经可以在龙芯上使用 Java, .Net 和 NodeJS 开发软件。对这三大主流技术栈的支持无疑可以让更多的程序员加入龙芯的软件生态系统构建中来。在这三大技术栈中,龙芯最早支持的是 Java,从龙芯社区看到早在2014年就已经有 JDK 6 和 JDK 8 的新闻发布了,但是到目前为止看到的仅仅是 J原创 2020-12-23 16:58:17 · 785 阅读 · 1 评论 -
.Net Core如何在单元测试中Mock IConfiguration.GetValue
在.Net Core中通常使用IConfiguration来读取程序的配置信息,但是IConfiguratio.GetValue<>是一个扩展方法,不能Mock。其实如果去读一下IConfiguration的实现,我们就知道IConfiguration.GetValue是通过IConfigurationSection来实现的,我们可以通过Mock IConfigurationSection来解决问题。下面是示例代码: var configMock = new Mock&l原创 2020-12-01 21:12:08 · 1325 阅读 · 1 评论 -
如何在单元测试 (Unit Test) 中模拟 DateTime.Now
这个问题其实比较简单,只要实现一个接口,让它返回现在的时间就可以了。比如用类似下面的代码: /// <summary> /// This interface is to provide current time so that we can setup current date time in unit test based on our purpose. /// </summary> public interface IDateTimeProvide原创 2020-11-30 21:05:27 · 853 阅读 · 0 评论 -
如何解决NLog记日志性能慢的问题
最近写了一个模拟器程序,由于模拟器中要在日志中记录对象实时变化时的完整状态,导致日志数量猛增,跑了一分钟程序就有3000多条日志。日志多没关系,但是我发现在增加日志内容后程序在很多运行周期中常常超时。难道这个.Net Core程序用的NLog还要占用主线程的CPU资源去记录日志吗?仔细研读了NLog的文档后,发现NLog在默认状态下确实是使用记录日志时所用的线程来保存日志的。但是你可以打开异步开关来实现在日志自己的线程中保存日志,具体做法是在配置文件的 targets 增加 async = “true”原创 2020-11-30 20:34:46 · 2383 阅读 · 2 评论 -
ASP.NET CORE如何使用JWKS来做认证和授权
JWKS是JSON Web Keys的缩写。如果API Service使用第三方的JWT Token来做认证和授权,那么通常第三方会提供一个JWKS地址,这个地址里有用来验证token的公钥。下面是从 okta 取到的一个 JWKS 的内容示例。我们可以看到这里有两个RSA RS256 公钥。{ "keys": [ { "kty": "RSA", "alg": "RS256", "kid": "hE2MW0jokw9QCkomGHA9zNAxnxIUc_v原创 2020-11-17 10:27:50 · 1875 阅读 · 0 评论 -
ASP.NET CORE 如何让 Swagger Page 变为可选项
在API中加入OPEN API 或者 Swagger 说明文档,可以方便 API 使用者了解和测试 API。但是在某些生产环境中,我们可能并不想让普通用户知道如何调用 API。本文介绍的方法可以让 ASP.NET CORE 的 API 文档页面变为可选项。首先在appsettings.json 文件中增加一个选项,我就叫它 EnableApiDoc 吧。当它被设置为 TRUE 的时候,我们希望ASP.NET CORE 显示 API 文档页面,否则不显示。其次,我们在 StartUp.Configure原创 2020-11-12 15:23:06 · 189 阅读 · 1 评论 -
如何在asp.net core服务启动前访问外部api来初始化服务
如果 asp.net core 服务需要先访问外部的 API,才能完全启动服务,需要怎么做呢?有两个办法可以解决这个问题。方法1:创建一个IHost扩展方法首先创建一个类似于下面代码的扩展类,为 IHost 类增加一个 PostStart 方法。public static class PostStartHostExtention{ public static IHost PostStart(this IHost host) { using(var scope = h原创 2020-11-11 16:29:35 · 776 阅读 · 0 评论 -
如何解决mscordaccore.dll不同AMD64版本的问题
在发布你的.Net Core程序的时候,你会发现不同的机器上编译发布的NetCore的某些DLL不一样。比如mscordaccore.dll就可能在某些机器上是:mscordaccore_amd64_amd64_4.700.20.47201.dll而在别的机器上是mscordaccore_amd64_amd64_4.700.20.36602.dll这里的原因是.Net Core SDK的版本不一样,比如上面47201的SDK版本是Net Core 3.1.403而下面那个对应的是Net Core原创 2020-11-04 09:44:16 · 511 阅读 · 0 评论 -
如何把asp.net core服务做成为Windows Service服务
如果你的asp.net core服务最后会安装到Windows上运行,那么你肯定不想每次都开个控制台窗口来运行你的服务,因为这样每次开机你都需要手动打开你的服务,其次控制台窗口也容易被用户关掉,你的服务会意外地被终止运行。使用下面的方法可以快速地把你的asp.net core程序做成Windows Service服务,这样你就可以让Windows来帮你管理服务了。安装 Microsoft.Extensions.Hosting.WindowsServices 包使用下面的命令,为你的asp.net co原创 2020-10-29 08:30:49 · 3397 阅读 · 0 评论