小编Мак*_*вой的帖子

如何在.net6中使用WebApplicationFactory(没有可讲的入口点)

在 ASP.NET Core 6 中,默认模板将所有内容从Startup.cs移至Program.cs,并使用 Program.cs 中的顶级语句,因此不再有(可说的)Program类 ether。

这看起来很棒,但现在,我需要测试这一切。WebApplicationFactory<T>仍然期望我通过入门级,但我不能这样做(因为它的名字现在难以形容)。

预计如何在 ASP.NET Core 6 中配置集成测试?

integration-testing asp.net-web-api asp.net-core .net-6.0

45
推荐指数
2
解决办法
4万
查看次数

如何在 ASP.NET Core 6 中使用 DateOnly/TimeOnly 查询参数?

从 ASP.NET API 中的 .NET 6 开始,如果要获取DateOnly(或TimeOnly) 作为查询参数,则需要单独指定其所有字段,而不是仅提供字符串(“2021-09-14”或“10: 54:53" 为TimeOnly) 就像你可以为 一样DateTime

如果它们是正文的一部分,我可以通过添加自定义 JSON 转换器 ( AddJsonOptions(o => o.JsonSerializerOptions.Converters.Add(...))) 来解决这个问题,但它不适用于查询参数。

我知道这可以通过模型绑定器修复,但我不想为每个包含DateOnly/TimeOnly. 有没有办法广泛修复这个应用程序?

演示:

假设您有以下操作:

[HttpGet] public void Foo([FromQuery] DateOnly date, [FromQuery] TimeOnly time, [FromQuery] DateTime dateTime)

下面是它在 Swagger 中的表示方式:

在此输入图像描述

我希望它表示为三个字符串字段:一个 for DateOnly、一个 forTimeOnly和一个 for DateTime(这个已经存在)。

PS:这不是 Swagger 问题,而是 ASP.NET 问题。如果我尝试?date=2021-09-14手动传递,ASP.NET 将无法理解它。

c# typeconverter model-binding asp.net-core-webapi .net-6.0

33
推荐指数
1
解决办法
2万
查看次数

Roslyn 分析器:类是否标记为部分

有没有办法找出类是否partial在 Roslyn 分析器内?有一个PartialImplementationPartin IMethodSymbol,但没有类似的 for INamedTypeSymbol

我正在编写一个源生成器,并且仅在可能的情况下才生成该类的第二部分(如果第一部分是部分的)。

c# partial-classes roslyn-code-analysis csharp-source-generator

6
推荐指数
1
解决办法
1190
查看次数

ASP.NET Core API:添加自定义路由令牌解析器

我在我的项目中使用https://github.com/ardalis/ApiEndpoints(每个控制器一个操作),但我遇到了[Route("[controller]")]不太适合我的问题,因为控制器如下所示:

图像

我需要类似的东西[Route("[namespace]")],但 ASP.NET Core 不支持它。

有没有办法在 中添加自定义路由令牌解析Startup.cs

到目前为止我的解决方案

  • 硬编码路线
  • 创建包含带有自定义令牌的路由的自定义属性,以及将解析自定义令牌并生成Route属性的源生成器。

c# asp.net-core asp.net-core-webapi asp.net-core-routing

3
推荐指数
1
解决办法
1568
查看次数

匹配“[abc]”、“[[abc]”、“[abc]]”,但不匹配“[[abc]]”,

我正在尝试匹配,[abc]除非它[]从双方“转义” (因此[[abc]]被视为转义,但不是[[abc]or [abc]])。

我能找到的最接近的是(?<!\[)\[abc\](?!\])来自*ABC* 的 Match "ABC",但不是来自 **ABC**,但如果它只从一侧转义,它会忽略匹配。

.net c# regex escaping

0
推荐指数
1
解决办法
108
查看次数