小编Jam*_*ing的帖子

如何使用环境变量覆盖ASP.NET Core配置数组设置

LT; DR

在ASP.NET Core应用程序中,我有一个appsettings.json配置文件,它使用JSON数组来配置一组设置.

如何使用环境变量覆盖其中一个数组对象的设置?

背景

我使用serilog在ASP.NET核心应用,并使用Serilog.Settings.Configuration,允许它使用进行配置appsettings.json.

配置是这样的:

{
  "Serilog": {
    "Using":  ["Serilog.Sinks.Literate"],
    "MinimumLevel": "Debug",
    "WriteTo": [
      { "Name": "File", "Args": { "path": "%TEMP%\\Logs\\serilog-configuration-sample.txt" } }
    ],
    "Enrich": ["FromLogContext", "WithMachineName", "WithThreadId"],
    "Properties": {
        "Application": "Sample"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

部署时,我想覆盖一些设置,例如MinimumLevel,以及日志文件的路径.我首选的选项是在我部署到Azure应用服务时通过环境变量执行此操作,因此我将通过Azure管理门户使用应用程序设置(这些实现为环境变量).

我可以通过添加名称为的环境变量和应用程序名称来轻松设置MinimumLevel.Serilog:MinimumLevelSerilog:Properties:Application

使用数组指定设置的格式是什么?

configuration serilog .net-core asp.net-core

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

如何使用ASP.NET标识实现多租户用户登录

我正在开发一个多租户解决方案,我想使用最新的ASP.NET Identity框架,特别是Entity Framework实现.

基本上我需要允许两个用户拥有相同的用户名,虽然它必须在租户中是唯一的,我也想利用外部登录,如Twitter,微软,Facebook和谷歌.

据我所知,该框架并未考虑多租户设计,尽管它似乎确实允许可扩展性.我宁愿尽可能多地使用现有组件,但目前我认为我将不得不放弃实体框架实现,并自己编写代码.

有没有其他人试过这个,他们有多少自己编码.

multi-tenant entity-framework-6 asp.net-identity

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

如何设置Ninject DI以创建Hyprlinkr RouteLinker实例

我有一个MVC4 Web API项目,我利用Mark Seemann的Hyprlinkr组件生成Uris链接资源.(客户 - >地址例如).

我已经遵循了Mark的Web依赖注入指南(适用于Ninject),我无法理解将IResourceLinker注入控制器应该做些什么.

按照Mark的指南,我的IHttpControllerActivator.Create create方法如下所示:

IHttpController IHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)
{
    var controller = (IHttpController) _kernel.GetService(controllerType);

    request.RegisterForDispose(new Release(() => _kernel.Release(controller)));

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

正是在这种方法中,Hyprlinkr自述文件建议创建RouteLinker.不幸的是我不知道如何在Ninject注册这个.

我不能像下面那样绑定,因为这会导致多个绑定:

_kernel.Bind<IResourceLinker>()
    .ToMethod(context => new RouteLinker(request))
    .InRequestScope();
Run Code Online (Sandbox Code Playgroud)

我有这样的重新绑定:

_kernel.Rebind<IResourceLinker>()
    .ToMethod(context => new RouteLinker(request))
    .InRequestScope();
Run Code Online (Sandbox Code Playgroud)

但我担心更改ninject绑定图对每个请求都可能是一件坏事.

实现这一目标的最佳方法是什么?


根据Paige Cook的要求更新

我在这里使用重新绑定:

IHttpController IHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)
{
    _kernel.Rebind<IResourceLinker>()
        .ToMethod(context => new RouteLinker(request))
        .InRequestScope();

    var controller …
Run Code Online (Sandbox Code Playgroud)

dependency-injection ninject asp.net-web-api hyprlinkr

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

我可以从远程容器存储库“补水” Docker构建缓存吗?

TL; DR

我正在使用构建一个ASP.NET应用程序docker build;当我在本地计算机上运行构建时,它会快速执行,因为我正在使用构建缓存

Step 1/10 : FROM microsoft/aspnetcore-build:2.0.0 as identity-build
 ---> c5549d4c5716
Step 2/10 : ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
 ---> Using cache
 ---> 060911817d8c
Step 3/10 : WORKDIR /publish
 ---> Using cache
 ---> 851e87c05c42
Run Code Online (Sandbox Code Playgroud)

我试图在AppVeyor CI上执行相同的操作,但是因为AppVeyor为每个构建都提供了干净的VM映像,所以没有缓存。

我尝试了从私有容器存储库中提取构建映像的尝试,但这似乎并没有“使映像缓存补水”,因此,没有缓存命中。

背景

我已经创建了一个示例GitHub repo,并在AppVeyor中进行了相关的构建,我正在尝试进行构建

我试图从私有容器存储库中还原构建映像,但这并未导致任何缓存命中。

我正在尝试通过使用docker build缓存实现两个目标。

  1. 构建速度更快。
  2. 确定代码是否已更改,然后使用它来确定是否需要部署。

首先,我只是试图重新构建构建缓存,然后从那里继续进行实验。

caching docker appveyor docker-build asp.net-core

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