小编Kis*_*nav的帖子

“JSON 值无法在 Refit 中转换为 Enum

我有一个 .Net Core Razor 页面应用程序,它尝试使用使用 Refit 创建的类库调用 .Net Core API。

我创建了一个 Refit API 接口,该接口使用以枚举作为属性类型之一的模型。

这是API端的接口片段:IPaymentAPIinterface

    [Post("/recharge")]
    Task<string> Recharge([Body] RechargeRequest request);
Run Code Online (Sandbox Code Playgroud)

这是请求模型: 该模型包含一个简单的 enum ELicenseType

public class RechargeRequest
{
    public ELicenseType LicenseType{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

EL 许可证类型:

public enum ELicenseType
{
    NotSpecified = 0,
    Standard = 1,
    Commercial = 2
}
Run Code Online (Sandbox Code Playgroud)

控制器中的API实现:

    [HttpPost("recharge")]
    public async Task<IActionResult> Recharge(
        [FromBody] RechargeRequest request)
    {
        Recharge result = await _mediator.Send(_mapper.Map<RechargeCommand>(request));

        return Ok();
    }
Run Code Online (Sandbox Code Playgroud)

调用此 Recharge 方法时,Refit 会抛出 ValidationApiException:

ValidationApiException: Response status …
Run Code Online (Sandbox Code Playgroud)

refit .net-core asp.net-core

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

在调试引用 .Net Standard Lib 的 CLI 项目时无法检查变量

我们面临着与 Laurent 在视觉工作室社区提出的这个问题相同的问题:LINK

问题:如果我们尝试调试 C++/CLI 项目,.Net Standard 库检查中定义的所有变量都会失败并显示以下消息:

无法解析对程序集“System.Runtime”中类型“System::ValueType”的引用。

编译项目时,会显示以下警告:

警告 C4691:“System::Object”:在未引用的程序集“netstandard”中需要引用类型,而是使用当前翻译单元中定义的类型

注意:此诊断发生在从程序集“AppLib.Calc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=a58edc04d4501d54”中导入类型“App::Calc::Models::InputDataContext”时。

重现步骤:

  1. 创建一个包含结构/类的 .Net Standard (2.0.0) 项目。
  2. 使用 .Net Framework 4.6.1 创建 C++/CLI 项目(4.7.1 中的相同问题)并将之前创建的 Struct/Class 包含到一个类中。
  3. 运行并尝试将变量添加到 Watch 窗口。

我们有一个很大的 CLI 层,如果我们不能在调试时检查变量,这将是痛苦的。

所以我的问题是自提出问题以来已经过去了大约六个月,但尚未解决。我想知道是否有其他人遇到过同样的问题,如果有的话,有什么解决方法。

更新:刚刚从 Visual Studio 反馈系统收到以下评论。

此问题的修复程序已在内部实施并准备发布。一旦它可供下载,我们就会为您更新。

已解决:该问题现已由 Visual Studio 团队解决。

此问题的修复程序已发布!从https://visualstudio.microsoft.com/downloads/安装最新版本。感谢您提供有助于改进产品的宝贵反馈。

visual-studio visual-c++ visual-studio-debugging visual-studio-2017 .net-standard

5
推荐指数
0
解决办法
520
查看次数

Swagger UI 显示camelCase 参数而不是PascalCase

我在 Asp.Net Core 3.1 API 中使用 NewtonSoft.json 和 Swashbuckle.AspNetCore 版本 5.3.3。

默认情况下,在 Asp.Net Web API 中,2 个输入和输出参数大小写为 PascalCase。

现在我正在迁移到 .Net Core API,其中默认情况下是驼峰式大小写。

因此,我通过在 Startup.cs 中添加以下代码将其更改为使用 PascalCase:

services.AddControllers()
            .ConfigureApiBehaviorOptions(options =>
            {
                options.SuppressModelStateInvalidFilter = true;
            })
            .AddNewtonsoftJson(options =>
            {
                // Use the default property (Pascal) casing
                options.SerializerSettings.ContractResolver = new DefaultContractResolver();
            });//Configure Newtonsoft as JSON serializer.
Run Code Online (Sandbox Code Playgroud)

但是在 Swagger UI 中,它以驼峰命名显示输入和输出参数,而 API 的响应包含以 PascalCase 显示的值。

我用谷歌搜索但在 AddSwaggerGen DescribeAllParametersInCamelCase() 中找到了一个方法,它将所有参数转换为驼峰式大小写。

是否有 DescribeAllParametersInPascalCase() 方法?

如何配置 Swagger/Swashbuckle 以在 PascalCase 中显示输入/输出参数?

下面是一个例子:

在此处输入图片说明

swagger swashbuckle asp.net-core asp.net-core-webapi swashbuckle.aspnetcore

5
推荐指数
2
解决办法
4466
查看次数

MongoDB Compass 在使用“插入文档”功能填充数据库时不允许 ObjectId()?

我正在使用 MongoDB Compass 版本 1.25.0。

我试图使用 MongoDB Compass 的“插入文档”功能插入一位同事共享的文档。

但是,它表明该文档的格式不正确。 在此输入图像描述

我认为它正在验证 JSON 格式,而 ObjectId() 不是有效的 JSON 值。

我知道 Compass 会自动创建 ObjectId() 但我想显式传递它。

我求助于 Shell,并且能够插入文档。

我的问题是 MongoDB Compass 是否允许从 UI 输入 ObjectId() ?如果是,我做错了什么?

mongodb mongodb-compass

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

IUserClaimsPrincipalFactory`1 未在 IndentityServer 实现中注册错误

即使在注册 AddDefaultIdentity 后,我也遇到异常

System.InvalidOperationException: Service type: IUserClaimsPrincipalFactory`1 not registered.
Run Code Online (Sandbox Code Playgroud)

这是身份注册码:

services.AddDefaultIdentity<ApplicationUser>(options =>
            {
                //Disable account confirmation.
                options.SignIn.RequireConfirmedAccount = false;
                options.SignIn.RequireConfirmedEmail = false;
                options.SignIn.RequireConfirmedPhoneNumber = false;
            })
            .AddEntityFrameworkStores<ApplicationDbContext>();
Run Code Online (Sandbox Code Playgroud)

这是 IdentityServer 代码:

        var builder = services.AddIdentityServer()
            .AddInMemoryApiScopes(IdentityServerConfig.ApiScopes)
            .AddInMemoryIdentityResources(IdentityServerConfig.IdentityResources)
            .AddInMemoryApiResources(IdentityServerConfig.ApiResources)
            .AddInMemoryClients(IdentityServerConfig.Clients)
            .AddAspNetIdentity<IdentityUser>();
Run Code Online (Sandbox Code Playgroud)

identityserver4 asp.net-core-identity

2
推荐指数
2
解决办法
726
查看次数