小编Dou*_*son的帖子

如何使用 Swashbuckle 的 SwaggerUI 显示静态 swagger.json 文件而不是 SwaggerGen 动态创建的定义?

我有一个 ASP.NET Core MVC 应用程序,针对 .NET Core 2.1 框架。该应用程序提供 RESTful API 并返回 JSON 数据。

使用SwaggerHub中基于 Web 的交互式 SwaggerGen ,我创建了一个 API 定义文档,并将其以 JSON 格式保存为“swagger.json”,保存在我的 ASP.NET Core MVC 应用程序项目的文件夹中。

手动创建“swagger.json”API 定义文件

由于我已经定义了 API,因此不需要在应用程序中运行 SwaggerGen。我只是希望 SwaggerUI 显示我创建的静态“swagger.json”文件。

我已经阅读了 Swashbuckle 文档以及几个“如何开始使用 Swashbuckle”教程,但它们都假设 SwaggerGen 将用于从我的 API 动态创建 Swagger API 文档。

我已将“Swashbuckle.AspNetCore”NuGet 包添加到我的应用程序的依赖项中。

Swashbuckle.AspNetCore NuGet 包

在我的应用程序 Startup.cs 类的 Configure() 方法中,我添加了 UseSwaggerUI 指令:

app.UseSwaggerUI(c => {
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
Run Code Online (Sandbox Code Playgroud)

当我在 Visual Studio 中运行应用程序时,我得到一个正常的空白页。

ASP.NET Core MVC 应用程序运行

根据 Swashbuckle 文档,SwaggerUI 格式的 API 文档应该在相对“/swagger”路径中可用,假设已添加 SwaggerGen 并动态生成了 API 定义(文件?)。

获取相对“/swagger”路径会产生“400 Bad Request”错误。

请求 Swagger 文档会产生“400 Bad Request”错误

问:SwaggerGen 会生成自己的“swagger.json”文件吗?如果是,它将在哪里创建该文件?

问:有没有办法告诉 …

asp.net-core-mvc swashbuckle openapi

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

NLog 适用于 ASP.NET Core 应用程序,但不适用于 .NET Core xUnit 测试项目

我创建了一个 .NET Core 类库,它定义实用程序类接口并实现每个接口,例如通过 ADO.NET 访问数据库等。

每个实现类都使用 NLog。这在包含并引用 .NET Core 类库的 ASP.NET Core Web 应用程序中非常有效。

但是,当我尝试在 .NET Core xUnit Test 项目的上下文中实例化这些相同的实现类时,我得到

无法将“NLog.Logger”类型的对象转换为“Microsoft.Extensions.Logging.ILogger”类型

我搜索过类似的问题但没有找到。

在每个类中我都声明了一个私有只读变量:

private readonly ILogger<DatabasePersistenceAdoDotNet> _logger = null;
Run Code Online (Sandbox Code Playgroud)

我像这样实例化这个变量:

_logger = (ILogger<DatabasePersistenceAdoDotNet>)NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
Run Code Online (Sandbox Code Playgroud)

这在包含并引用 .NET Core 类库的 ASP.NET Core Web 应用程序中有效,但在我的 .NET Core xUnit Test 项目中却崩溃了。

我怀疑这与 ASP.NET 的依赖项注入在 .NET Core xUnit Test 项目中不可用有关,但我无法弄清楚如何使我的实用程序包在这两种情况下都能正常工作。

c# nlog .net-core asp.net-core

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