小编yBo*_*her的帖子

结构指令中的角度输入绑定

我找不到在结构指令中绑定多个输入的方法:

看法

   <div *requiredAccessRight requiredA="[EnumA.A]" requiredB="[EnumB.A]">
Run Code Online (Sandbox Code Playgroud)

指示

   @Directive({
        // tslint:disable-next-line: directive-selector
        selector: '[requiredAccessRight]',
    })
          export class RequiredAccessRightDirective implements OnInit {
                @Input() requiredA: EnumA[];
                @Input() requiredB: EnumB[];
...
           }
Run Code Online (Sandbox Code Playgroud)

期间ngOnInit()两者Inputs()都会结束undefined

angular

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

.NET CORE Lifetime 和 DI 注入的后台任务

我想在asp.net core 中使用后台任务。我找到了有用的文档https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-6.0&tabs=visual-studio

我想知道为什么它们的生命周期显然是有范围的激活有范围服务的托管服务。作用域服务可以使用依赖项注入 (DI)。 在这方面的范围是什么?

对于 Web 应用程序,范围生命周期表示每个客户端请求(连接)都会创建一次服务。使用 AddScoped 注册作用域服务。在处理请求的应用程序中,作用域服务将在请求结束时被释放。

虽然我确实理解这对于例如对 API 的标准 http get 请求意味着什么,但我不理解作为后台工作者的含义。恕我直言,拥有一个单身背景工作者会更有意义。我当然不希望在我的应用程序中同时运行多个实例。

另一件事是后台工作人员中的 DI,它显然与标准服务不同: 要在后台服务中使用作用域服务,请创建一个作用域。默认情况下,不会为托管服务创建范围。

我无法确认:

    services.AddHostedService(x => new DataPersister(x.GetRequiredService<IAsyncDocumentSession>(), x.GetRequiredService<ILogger>()));
Run Code Online (Sandbox Code Playgroud)

似乎工作得很好。

backgroundworker asp.net-core

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

Angular 8 HttpClient:无法处理文本/csv服务器响应

我有一个端点,它返回一个 csv 数据集,该数据集将使用保存saveasBlob\nAngularJS 前端工作正常,而 Angular 8 则很困难。\n这是我的 Angular 8 实现

\n\n
 const headers = new HttpHeaders({\n            Accept: \'text/csv\',\n        });\n        const options = { headers };\n        this.httpClient\n            .post<ExportCsvSettingsViewDto>(this.appConfigService.buildApiUrl(this.loadPath(batchId)), csvDto, options)\n            .subscribe((fileResult: any) => {\n                const file = new Blob([fileResult], { type: \'text/csv\' });\n                saveAs(file, this.fileName + \'.csv\');\n            });\n
Run Code Online (Sandbox Code Playgroud)\n\n

这会导致以下HttpErrorResponse情况:\n Object {error: SyntaxError: Unexpected token 。在 JSON 中,位于 positio\xe2\x80\xa6,文本:“1.112.373;en-US\n日期时间 UTC;日期本地时间;Bat\xe2\x80\xa6”}

\n\n

我怀疑这是因为HttpClient将响应视为而JSON不是"text/csv"\n那些是请求标头:

\n\n
Connection: keep-alive\nContent-Length: 141\nPragma: no-cache\nCache-Control: no-cache\nAccept: text/csv\nContent-Type: …
Run Code Online (Sandbox Code Playgroud)

httpclient http-headers angular

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

如何将 ActionBlock 的所有异常包装在单个 AggregateException 中

我遇到了 TPL ActionBlock,它对于(限制的)并行异步操作似乎非常方便。到目前为止,我正在使用Task.WhenAll()(+Semaphore进行节流)。当谈到例外时,似乎存在很大差异:

var successList = new List<int>();
var failedList = new List<int>();
try
{
    var actionBlock = new ActionBlock<int>(
        async x => await Task.Run(() =>
        {
            if (x < 5)
            {
                failedList.Add(x);
                throw new Exception(x.ToString());
            }

            successList.Add(x);
        }),
        new ExecutionDataflowBlockOptions());

    Enumerable.Range(1, 10).Each(x => actionBlock.Post(x));
    actionBlock.Complete();

    await actionBlock.Completion.ConfigureAwait(false);
}
catch (Exception ex)
{
    // works for approach using task.whenall
    Console.WriteLine(ex);
    Assert.True(failedList.Count == 4);
    Assert.True(successList.Count == 6);
    return;
}

Assert.Fail();
Run Code Online (Sandbox Code Playgroud)

该测试失败,因为ActionBlock发生异常时立即停止。我发现这是 github 上的一个问题:Dataflow: …

c# exception task-parallel-library tpl-dataflow

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