问题标签 [minimal-apis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
72 浏览

c# - 如何以与主要方法不同的方法返回文件?

我想通过Results.File(). 它在 main 方法 ( app.MapGet) 中执行时有效,但是在不同的方法中返回它什么都不做。它应该发送文件的行在调试器中执行,但是它不返回,而是跳回到主方法执行最后一个返回(永远不应该执行的那个)。最后一次返回确实返回了一个结果。

我也使用了几种方法,例如Result.BadRequest(),但是当它不在 main 方法中时,什么都不执行。

我看到人们使用IResult作为返回方法,但我不确定这是否正确。

我的猜测可能是错误的返回类型或执行任务左右。

整体方法:

0 投票
1 回答
141 浏览

c# - 将 Swagger 描述添加到最小的 .NET6 API

我在 .NET6 中有一个小项目,其中包含类似的最小 API

SwaggerUI我可以使用这个 API 但我找不到向它添加描述的方法(尽管在项目设置中我检查了创建 API XML 文档)。

在此处输入图像描述

如何添加 XML 注释?

0 投票
0 回答
47 浏览

c# - 最小 API NUnit 测试:缺少 testhost.deps.json

在我的 .NET6 项目中,我有一些最小的 API,我想测试它们。您可以在GitHub 上找到完整的源代码。为此,我创建了一个新的 NUnit 测试项目。在项目文件中,我添加PreserveCompilationContext了,文件看起来像

然后,我像这样创建了 WebApplicationFactory 的实现

最后,我的测试课是这样的

当我运行项目时,我收到一个错误

System.InvalidOperationException:找不到“C:\Projects\Net6MinimalAPIs\MinimalApis.Tests\bin\Debug\net6.0\testhost.deps.json”。此文件是功能测试正常运行所必需的。您的源项目 bin 文件夹中应该有该文件的副本。如果不是这种情况,请确保在项目文件中将属性 PreserveCompilationContext 设置为 true。例如“真实”。要使功能测试正常工作,它们需要从构建输出文件夹运行,或者必须将应用程序输出目录中的 testhost.deps.json 文件复制到运行测试的文件夹中。此错误的一个常见原因是在测试运行时启用了卷影复制。

在此处输入图像描述

我用谷歌搜索了一下,但我找不到如何生成这个文件。

更新

我试图添加一个xUnit具有相同结果的项目。另外,我注意到它Program来自

因为我添加了这个参考,但这是错误的。我想参考Program主项目中的 ,但由于它的保护级别,它是不可访问的。Program.cs外观_

0 投票
1 回答
34 浏览

asp.net-core - 我可以从 .NET 6.0 最小托管中的 DI 容器/Lamar 创建一个对象,保留单例吗?

我们已从 Windows Framework 4.7 应用程序迁移到 .NET 6.0。为依赖注入添加了 Lamar。我们正在尝试完成对最新“单文件”program.cs 的重构,但出现意外 System.ObjectDisposedException:“无法访问已处置的对象”。在所有情况下,错误都是针对Func<T>对象创建期间的。

我们所有的测试都使用相同的环境正确运行,除了开始测试我们(a)创建 DI 容器和(b)使用容器创建加载单例的对象(来自 MongoDB):

在 program.cs 中,我们配置容器,但看不到它已创建或在 program.cs 中访问它。相反,我们在第一次使用控制器期间从 IServiceProvider 创建 HomeService。在这里,我们试图在创建期间限制生命周期范围:

对于测试,我们使用相同的加载步骤,当然,除了添加控制器/mvc(即不使用 builder.Services.AddControllers(); 和 builder.Services.AddMvc() 进行(集成)测试)。

我们尝试了很多不同的事情,比如独立于启动创建我们的对象,但这并没有对齐单例。我们可以通过使用静态来获得功能,但随后我们失去了动态更改访问权限。

一些很棒的技巧,例如在 ConfigureServiceshttps://andrewlock.net/exploring-dotnet-6-part-10-new-dependency-injection-features-in-dotnet-6/中使用 ASP.NET Core DI 解析实例,但我在初始创建后看不到获取实时容器的具体示例。

问题是否可能只是新的 .NET DI 实现的生命周期管理之间的区别?由于这是组合根的配置,如果我们可以按照我们的测试方法进行配置,它应该可以解决我们的问题。欢迎其他解决方案!

0 投票
1 回答
37 浏览

c# - 如何在 net 6 和最小 api 中返回内容类型为 json 的 json 字符串?

如果我有一个 json 字符串(例如从文件中读取)并且我的 api 作为字符串返回,邮递员会将响应视为文本

那么如何将内容类型强制为 application/json?(请不要使用 Newtonsoft)我可以使用这种解决方法,但看起来很难看

谢谢

0 投票
1 回答
52 浏览

c# - 如何使用 ASP.NET 最小 API 为不同的端点返回不同的缓存控制标头?

我想使用 ASP.NET 最小 API 为不同的端点返回不同的缓存控制标头值。我们如何在没有控制器的情况下做到这一点?

这可以使用控制器来完成,如下所示:

第一个端点返回标头Cache-Control: public,max-age=3600

第二个端点返回标头Cache-Control: no-cache,max-age=0

0 投票
1 回答
40 浏览

c# - 为实体框架创建与其他记录有关系的记录:ASP.NET Core 6 Minimal API (SQL / Postgres)

我有两个表,Participant并且Meeting在 ASP.NET Core 6 最小 API 项目中设置如下:

现在我需要创建一个连接这两个表/记录的组合表/记录

在 SQL 中,这将是这张表

但是我如何将它作为带有外键的记录写在 EF 中?

0 投票
2 回答
74 浏览

c# - 知道为什么 foo 返回空体吗?

由于某种原因 foo 总是返回一个空的主体:

0 投票
1 回答
43 浏览

asp.net-mvc - How to serve video file / stream from ASP Net Core 6 Minimal API

I was trying to achieve this following different tutorials but did not succeed. How do I handle a http range request in minimal API to serve video stream ?

I have this bare minimal setup code for API with a single GET path "/video" mapped. I also made a folder "wwwroot" inside project folder. I placed in there a mp4 video file named "test.mp4". Would it be possible for someone knowledgeable to write a simple example of how to stream this file inside my mapped route ?

0 投票
1 回答
43 浏览

c# - Web API 如何知道客户端文化/语言

我们有一个新的 GET 服务端点,它需要 DateTime 和 Decimal 数据以及其他参数。为简单起见,这代表我们的请求,还没有任何修复:

我们以字符串形式接收数据,因为我们的一些客户位于不同的国家,根据他们的文化采用不同的格式。

我们想要求客户在请求中的某处发送他们的文化,以便能够正确处理接收到的数据。

好吧,在这里,我们为客户找到了许多替代方案,可将其包含在他们的请求中,但我不确定哪种方案最适合或最适合执行此操作:

接受语言标头:似乎表明他们期望在响应中使用哪种文化,与参数无关。不是我们的情况,因为我们的回答只是 200(OK)。

content-language标头:似乎表示正文的语言。由于我们没有收到body,而是一个查询字符串,我怀疑我们应该使用它。

查询中的一个附加参数,例如:

用于相同目的的自定义标头。

其他建议是将日期接收为 UTC+0,但我认为客户不应该担心删除偏移量。

有没有标准的方法来做到这一点?