小编she*_*ild的帖子

ASP.NET Core 中的新任务如何利用依赖注入?

我正在为我的 WEBAPI 项目使用 ASP.NET CORE 2.0.5 运行时。在我的实现中,当请求传入时,一个新任务就会开始执行一些繁重的工作,并最终向其他地方的 webapi 发出请求。与此同时,我正在向呼叫者返回成功响应。

问题是,由于繁重的工作需要更长的时间来处理,我无法利用我在 Startup 类中设置的所有 DI 服务,因为原始请求已经返回并且所有 DI 服务都已处理。

有没有办法将我的 IServiceCollection 传递给新任务,或者有更好的方法吗?

更新:

事实证明,并不是所有 DI 服务都被处理掉了。只有这一个:

services.AddTransient<HttpMessageHandler, HttpClientHandler>();
Run Code Online (Sandbox Code Playgroud)

该行用于启用单元测试。没有它,我的 webapi 运行良好,但我的单元测试失败了......

c# multithreading dependency-injection task asp.net-core

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

如何使用多种方法从API网关触发AWS Lambda?

我正在使用 cloudformation 定义一个 api 网关,该网关定义了 4 个方法:GET、POST、PUT 和 DELETE。

我想使用这 4 个方法来触发我的 lambda。当部署此模板时。lambda 仅显示 API 网关的 DELETE 方法。

如何在 cloudformation 中定义我的 lambda,以便它将采用所有 4 种方法?

Resources:
lambdaExecutionRole:
Type: "AWS::IAM::Role"
Properties:
  Path: /
  AssumeRolePolicyDocument:
    Version: 2012-10-17
    Statement:
      - Effect: Allow
        Principal:
          Service:
            - lambda.amazonaws.com
        Action:
          - sts:AssumeRole
  ManagedPolicyArns:
    - !Sub "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"

lambdaFunction:
Type: AWS::Lambda::Function
Properties:
  FunctionName: !Ref AWS::StackName
  VpcConfig:
    SubnetIds:
      - {"Fn::ImportValue": !Sub "${networkStackName}-${AWS::Region}-privateSubnetAZ1"}
      - {"Fn::ImportValue": !Sub "${networkStackName}-${AWS::Region}-privateSubnetAZ2"}
    SecurityGroupIds:
      - {"Fn::ImportValue": !Sub "${securityStackName}-${AWS::Region}-sgDNSRestrictedAccess"}
  Runtime: dotnetcore2.1
  Handler: MY::LAMBDA.HANDLER::NAME
  MemorySize: 128
  Role: !GetAtt lambdaExecutionRole.Arn …
Run Code Online (Sandbox Code Playgroud)

aws-cloudformation aws-lambda aws-api-gateway

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

AWS ECS无法放置任务,因为没有容器实例满足其所有要求

我正在使用.NET Core WEBAPI和Dockerfile以下

FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "DummyService.dll"]
Run Code Online (Sandbox Code Playgroud)

在我的cloudformation模板中,ECS部分如下所示

  dummyWebApiEcsTaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
  Family: !Ref AWS::StackName
  TaskRoleArn: !GetAtt dummyWebApiIamRole.Arn
  ContainerDefinitions:
    - Name: !Ref AWS::StackName
      Image: MY IMAGE URL
      DnsSearchDomains:
        - !Join [".", [{"Fn::ImportValue": !Sub …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-ecs docker .net-core

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