小编lon*_*nix的帖子

使用appsettings.Production.json中的数据覆盖appsettings.json中的数组设置

我正在使用ASP.NET Core 2.1.我有设置,appsettings.json并使用选项模式将它们绑定到类.我想覆盖它们中的一些appsettings.Production.json.

根据文档支持覆盖,并且通常对我有用.但它不适用于数组.

appsettings.json:

"MySectionOuter": {
  "MySectionInner": [
    {
      "foo": "1",
      "bar": "2",
      "baz": "3"
    },
    {
      "foo": "a",
      "bar": "b",
      "baz": "c"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的重写 appsettings.Production.json

"MySectionOuter": {
  "MySectionInner": [
    {
      "bar": "4",
    },
    {
      "baz": "d"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用 - 它增加而不是替换.

读到该数组是键值存储的语法糖.所以我也试过这个:

"MySectionOuter": {
  "MySection:1": {
    "bar": "4",
  },
  "MySection:2": {
    "baz": "b",
  }
}
Run Code Online (Sandbox Code Playgroud)

但这也行不通.

什么是正确的语法?

UPDATE

评论显示我没有正确解释.我想要的是这样的:

在开发期间:

element1: foo=1
element1: bar=2
element1: baz=3
element2: foo=a …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core asp.net-core-2.0

7
推荐指数
3
解决办法
2280
查看次数

如何使用 Prettier 在代码块之间添加多行?

我开始使用 Prettier,但发现它没有选项来控制代码块之间的空行数,并且默认为 1。

我想要 2 个空行:

const bar = 10;
// blank 1
// blank 2
function foo() {
  hello();
  world();
}
// blank 1
// blank 2
foo();
// blank 1
// blank 2
export foo;
Run Code Online (Sandbox Code Playgroud)

但它默认为 1 个空行:

const bar = 10;
// blank 1
function foo() {
  hello();
  world();
}
// blank 1
foo();
// blank 1
export foo;
Run Code Online (Sandbox Code Playgroud)

我怎样才能通过 Prettier 实现这一目标?

(或者也许还有另一种方法可以做到这一点。令我惊讶的是 Prettier 中可用的可配置选项如此之少。我希望有更多的控制权。)

javascript node.js typescript visual-studio-code prettier

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

以异步方式执行 JWT 操作有好处吗?

我正在使用非常流行的jsonwebtoken节点包。签名和验证通常同步执行,但也提供异步选项。

我认为所涉及的操作既不是数据绑定的,也不是计算昂贵的,因此不存在给主/用户线程带来负担的风险。我没有看到任何好处。

那么为什么要异步执行此类操作——有什么好处呢?

hash cryptography asynchronous node.js jwt

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

在 docker-compose 命令中使用内联注释

在我的docker-compose.yml我需要使用很长的command,我想记录它。这不容易完成,但我有一个几乎有效的解决方法。

foo:                                    # valid comment
  image: foo:latest                     # valid comment
  command: >
           printf '
           something                    # explanation for this command
           --arg                        # explanation for this switch
           --a                          # explanation
           --b hello
           -c                           # this does...
           --d spam                     # don't use this when...
           #some notes
           --e ham                      # hmmm
           --eggs                       # explanation
           ' |grep -v ^[[:space:]]*$ |grep -v ^# |cut -d# -f1   # valid comment
  restart: always                       # valid comment
Run Code Online (Sandbox Code Playgroud)

所以每个命令和开关都可以被注释。

猛击:

  • printf ' ... ' 将所有内容打印为文本,作为命令运行 …

linux bash yaml docker docker-compose

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

应用所有 EF Core 迁移后运行代码

EF Core 5 有各种事件,但它们都与DbContext. 没有与迁移相关的事件 ( Migration)。

我想在应用所有迁移后运行自定义代码 - 无论是由代码 ( context.Database.Migrate()) 还是 CLI ( dotnet ef database update) 触发。

解决方法是添加一个“空”迁移,并将我的代码放入其Up方法中。但每次添加迁移时我都需要这样做。

假设没有我可以使用的事件或挂钩(有吗?),在应用所有迁移后如何运行自定义代码?

.net c# entity-framework entity-framework-core entity-framework-migrations

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

Microsoft.AspNetCore.Components.WebAssembly.Server 包的用途

我正在使用 ASP.NET Core 6。我正在尝试将 blazor 项目添加到包含 Web API 服务器项目的现有 monorepo。我运行了dotnet new blazorwasm --hosted,生成的服务器项目包含这个

<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="6.0.4" />
Run Code Online (Sandbox Code Playgroud)

它的目的是什么——我需要它吗?文档说

提供用于在本地托管 Blazor 开发服务器的类型。仅适用于框架,不支持在应用程序代码中使用。

这很令人困惑 - 为什么它包含在模板中?它并没有隐藏在Development环境构建步骤后面。

Microsoft.AspNetCore.Components.WebAssembly.DevServer 另外,它与包装有什么不同?

(生成的客户端 blazor 项目还引用Microsoft.AspNetCore.Components.WebAssemblyMicrosoft.AspNetCore.Components.WebAssembly.DevServer。我很好奇所有这些是如何相关的。)

c# asp.net-core blazor asp.net-core-6.0

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

启动期间验证ASP.NET Core 2.x选项

Core2有一个钩子,用于验证从appsettings.json以下位置读取的选项:

services.PostConfigure<MyConfig>(options => {
  // do some validation
  // maybe throw exception if appsettings.json has invalid data
});
Run Code Online (Sandbox Code Playgroud)

此验证代码在首次使用时触发MyConfig,并在每次之后触发.所以我得到了多个运行时错误.

但是,在启动期间运行验证更为明智 - 如果配置验证失败,我希望应用程序立即失败.该文档暗示是如何工作的,但没有发生什么变化.

我做得对吗?如果是这样,这是设计,那么我怎样才能改变我正在做的事情,以便按照我想要的方式工作?

(另外,PostConfigure和之间的区别PostConfigureAll是什么?在这种情况下没有区别,所以什么时候应该使用哪一个?)

c# .net-core asp.net-core asp.net-core-2.1 .net-core-2.1

6
推荐指数
3
解决办法
1226
查看次数

在单独的函数中用于“未定义”的自定义 TypeScript 类型保护

这不会编译:

public hello(user?: User): void {
  // ...do some stuff
  console.log(user.toString());      // error: "Object is possibly undefined" 
}
Run Code Online (Sandbox Code Playgroud)

这可以通过类型保护来修复:

if (!user) throw Error();
Run Code Online (Sandbox Code Playgroud)

但我想把它移到一个单独的函数中,所以我试过了

private guard(arg: unknown): arg is object {
  if (!arg) throw Error();
}
Run Code Online (Sandbox Code Playgroud)

我试过

private guard(arg: unknown): arg is object {
 return arg !== undefined;
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用。

如何在单独的函数中编写自定义类型保护,以断言“未定义”?

typescript

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

使用范围导入本地 npm 包

我的monorepo:

/app1
  package.json
/app2
  package.json
/shared
  package.json
Run Code Online (Sandbox Code Playgroud)

shared/package.json"name": "@company/shared"

应用程序项目的package.json文件具有依赖关系"@company/shared": "file:../shared"

在引用共享代码时,我想要一个“短”样式,当东西移动时也不太容易中断:

import { foo } from "@company/shared"
Run Code Online (Sandbox Code Playgroud)

但这不起作用,所以我必须这样做::

import { foo } from "../../../../../shared/src/something"
Run Code Online (Sandbox Code Playgroud)

我摆弄了两者package.jsontsconfig.json但没有成功。

我该如何设置?

node.js npm typescript tsconfig package.json

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

如何使用Swashbuckle设置“参数内容类型”?

我招摇用户界面会显示“参数的内容类型”与各条目:"application/json-patch+json""text/json""application/json",和"application/*+json"

我只想要"application/json"

回购上有一个类似的未解决问题,它使用以下视觉效果(旧版ui,但思路相同):

在此处输入图片说明

有什么办法可以设置这个吗?

Swashbuckle.AspNetCore版本4.0.1
Swashbuckle.AspNetCore.Filters版本4.5.5

swagger swagger-ui swashbuckle asp.net-core-2.2

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