小编lon*_*nix的帖子

ASP.NET Core 6 中的 AddEndpointsApiExplorer 是什么

我正在将 ASP.NET Core API 项目从 v5 升级到 v6。

v5中的服务配置:

services.AddSwaggerGen();
Run Code Online (Sandbox Code Playgroud)

v6中的服务配置:

builder.Services.AddEndpointsApiExplorer();    // what is this?
builder.Services.AddSwaggerGen();
Run Code Online (Sandbox Code Playgroud)

什么是AddEndpointsApiExplorer?无论我是否添加,一切都会按预期进行。

我使用“ASP.NET API 版本控制”。他们有关系吗?如果是这样,我必须同时使用两者,只使用库,还是现在不需要库?

c# swashbuckle asp.net-core aspnet-api-versioning asp.net-core-6.0

67
推荐指数
3
解决办法
4万
查看次数

X-Forwarded-For 和 X-Real-IP 标头之间的差异

我使用 Nginx 作为反向代理。

这些标头有什么区别:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP       $remote_addr;
Run Code Online (Sandbox Code Playgroud)

在一些文档/教程中,我看到两者都被使用,而在其他文档/教程中,只有第一个。

它们看起来很相似,所以我想了解它们有何不同以及我是否需要同时使用两者。

reverse-proxy http nginx http-headers nginx-reverse-proxy

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

在 TypeScript 中展平数组数组

我想压扁string[][]string[].

在几十个SO答案给出的建议是:[].concat(...arrays)

但这给了我这个错误:

“string[]”类型的参数不可分配给“ConcatArray”类型的参数。
属性“切片”的类型不兼容。
类型 '(start?: number | undefined, end?: number | undefined) => string[]' 不能赋值给类型 '(start?: number | undefined, end?: number | undefined) => never[]' .
类型 'string[]' 不能分配给类型 'never[]'。
类型 'string' 不能分配给类型 'never'。

我尝试的另一种方法是:

let foo: string[][] = [["a", "b", "c"], ["a", "b", "c"], ["a", "b", "c"]];
let bar = [].concat(...foo);
Run Code Online (Sandbox Code Playgroud)

这给出了类似的错误:

“string[]”类型的参数不可分配给“ConcatArray”类型的参数。

为什么它对除我以外的所有人都有效?

typescript angular

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

在 ASP.NET Core 中每 5 分钟运行一次异步托管服务

后台服务的ASP.NET Core文档显示了许多实现示例。

有一个在计时器上启动服务的示例,尽管它是同步的。还有另一个异步示例,用于启动具有范围依赖项的服务。

我需要同时执行这两项操作:每 5 分钟启动一个服务,并且它具有范围内的依赖项。没有这样的例子。

我结合了这两个示例,但我不确定使用Timerasync 的安全方法TimerCallback

例如

public class MyScheduler : IHostedService
{
  private Timer? _timer;
  private readonly IServiceScopeFactory _serviceScopeFactory;

  public MyScheduler(IServiceScopeFactory serviceScopeFactory) => _serviceScopeFactory = serviceScopeFactory;

  public void Dispose() => _timer?.Dispose();

  public Task StartAsync(CancellationToken cancellationToken)
  {
    _timer = new Timer((object? state) => {
      using var scope = _serviceScopeFactory.CreateScope();
      var myService = scope.ServiceProvider.GetRequiredService<IMyService>();
      await myService.Execute(cancellationToken);            // <------ problem
    }), null, TimeSpan.Zero, TimeSpan.FromSeconds(5));

    return Task.CompletedTask;
  }

  public Task StopAsync(CancellationToken …
Run Code Online (Sandbox Code Playgroud)

c# async-await asp.net-core asp.net-core-hosted-services asp.net-core-5.0

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

ASP.NET Core的"asp-fallback-*"CDN标记助手如何工作?

我理解asp-fallback-*标签助手的作用.我不明白的是如何.

例如:

<link rel="stylesheet"
      href="//ajax.aspnetcdn.com/ajax/bootstrap/3.3.5/css/bootstrap.min.css"
      asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
      asp-fallback-test-class="sr-only"
      asp-fallback-test-property="position"
      asp-fallback-test-value="absolute" />
Run Code Online (Sandbox Code Playgroud)

这将从CDN加载引导程序,并在CDN关闭时加载本地副本.

但它如何决定呢?我认为它会检查asp-fallback-test-class,asp-fallback-test-propertyasp-fallback-test-value.但这些属性意味着什么?

如果我想从CDN上挂一些其他的库,我需要为那些提供一些东西,但我不知道该把它放在那里.

有很多这方面的例子,但是我找不到关于它是如何工作的解释.

更新
我并不是真的想了解标签助手的工作原理 - 它们是如何渲染的,等等.我试图了解如何为这些属性选择值.例如,jQuery回退脚本通常具有asp-fallback-test="window.jQuery"合理意义 - 它是测试jQuery是否已加载的测试.但是我上面展示的那些是完全不同的.如何选择它们?如果我想使用其他一些CDN交付的库,我需要为这些属性指定值...我会用什么?为什么选择那些引导程序?

更新2
要了解回退过程本身的工作原理以及这些标记的编写方式,请参阅@ KirkLarkin的回答.要了解使用这些测试值的原因,请参阅我的回答.

c# razor asp.net-core asp.net-core-tag-helpers asp.net-core-2.1

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

无法从fs.readdir获取fs.Dirent数组

我正在使用节点8.10.0.

fs.readdir()返回文件名和子目录名称的数组,或. fs.Dirents[]

我无法让它发挥作用.这是一个简单的例子:

console.log(require("fs").readdirSync("/", {withFileTypes:true}));
Run Code Online (Sandbox Code Playgroud)

这给了我一个字符串数组(例如["bin", "mnt", "usr", "var", ...]),而不是一个fs.Dirent对象数组(这就是我想要的).

我如何让它工作?

fs node.js

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

在 vscode 基于 json 的设置编辑器中对设置进行排序

我使用 vscode 的原始设置编辑器 ( "workbench.settings.editor": "json"),因为它给了我更多的控制权。

截屏

问题是左侧的树 - 包含内部设置和扩展设置 - 未按字母顺序排序。非常难用。

在 vscode 存储库中,他们表示不会修复该问题,因为他们将重点放在新的 UI 上。

一定有办法对其进行排序。有谁知道如何(除了编写新的扩展)?

settings visual-studio-code

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

launchSettings.json 中 dotnetRunMessages 的用途

在 ASP.NET Core 5 中,模板在launchSettings.json以下位置提供:

"MyProject": {
  "commandName": "Project",
  "dotnetRunMessages": "true",    // <<<<<<<<
  "launchBrowser": true,
  "applicationUrl": "https://localhost:5001;http://localhost:5000",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
},
Run Code Online (Sandbox Code Playgroud)

dotnetRunMessages没有记录在任何地方。它有什么作用?

asp.net-core asp.net-core-5.0

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

HttpContext.TraceIdentifier 和 Activity.Current.Id 之间的区别

我在日志中使用“跟踪 ID”。关于 aspnet repo 和此处的建议是从HttpContext.TraceIdentifier.

但是,当框架ProblemDetails为验证失败创建时,它会使用Activity.Current?.Id.

例子:

var traceId1 = Activity.Current?.Id;        // OWZ4G27FO6UWH:00000003
var traceId2 = HttpContext.TraceIdentifier; // 00-2a8ee37903e657e3a95b41178dafc56e-91b02006afcf3133-00
Run Code Online (Sandbox Code Playgroud)

我担心我的日志使用一种类型的跟踪 ID,而框架使用另一种类型 - 当我发现自己需要分析日志时,我就会遇到问题。

这些有何不同?我应该使用哪个?该框架通常使用哪种类型?

更新

我也询问了回购协议,他们没有任何解释就关闭了它。如果您有时间,请打开一个新问题,并向我们提供链接,以便我们对您的问题进行投票。

c# asp.net-core

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

Node 的 bcrypt 和 bcryptjs 库有何不同?

我需要在 Node 中使用 bcrypt,像往常一样,有 27 个无数的库可供选择。

npm 上的两个顶级包是

  • bcrypt 247k 下载量/月
  • bcryptjs 337k 下载量/月
  • (还有什么要考虑的吗?)

它们有何不同?是否有令人信服的理由或用例来使用其中一个?

显然,一个是纯 JS,另一个绑定到本地 C++ 加密库。所以后者比前者

我读过应该选择最慢算法最快实现。所以这意味着我应该选择非 JS 的。然而,JS 更受欢迎。为什么在 node 中会出现这种情况——“纯 js”包比使用 node-gyp 绑定到本机库的包更可取有什么原因吗?

javascript encryption bcrypt node.js

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