小编Zoe*_*Zoe的帖子

如何使用 T-SQL 插入 Identity Server 4 持久化的 ApiSecret 值

我已经通过 Identity Server 4 快速入门使用实体框架来持久存储配置和操作数据。在 QuickStart 中,ApiResources 在代码中加载到数据库中。Api 秘密设置为

        new ApiResource("api1", "My API")
        {
            ApiSecrets = { new Secret("secret".Sha256())}
        }
Run Code Online (Sandbox Code Playgroud)

在 ApiResource 构造函数中。当在 Startup.InitializeDatabase 中将该 ApiResource 添加到 ConfigurationDbContext.ApiResources DbSet 时,

        foreach(var resource in Config.GetApiResources())
        {
            context.ApiResources.Add(resource.ToEntity());
        }
        context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

子 ApiSecrets 表中的记录在 ApiSecrets.Value 字段中包含可读文本值。

    K7gNU3sdo+OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols=
Run Code Online (Sandbox Code Playgroud)

我想通过 SQL 脚本管理我的配置数据,但我不知道如何正确设置 ApiSecrets.Value。我试过使用 T-SQL HASHBYTES('SHA2_256', 'secret'),但这会在 ApiSecrets.Value 中产生一个不可读的(我认为是二进制的)值。有没有办法通过 T-SQL 正确设置散列的秘密?

c# hash identityserver4

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

visual studio 2015 .net核心工具下载位置?

有谁知道我在哪里可以找到Visual Studio 2015 .NET Core Tools的最新下载.2017年2月3日,我从www.microsoft.com/net/core下载了Dot Net Tools Visual Studio 2015 Preview 2.那个页面当时有三个选择 - Visual Studio 2015,Visual Studio 2017和Command line/other.我现在需要在不同的系统上安装这些工具,并且无法在任何地方找到它们..NET Core下载页面现在只有两个选项 - Visual Studio 2017和Command line/other.有谁知道我今天可以在哪里下载这些工具,以及在未来某个时间我可以找到发布版本的地方?

visual-studio-2015 .net-core

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

ASP.NET Core 忽略 ASPNETCORE_ENVIRONMENT 变量

我知道其他人已经发布了这个问题,但是我所看到的解决方案都没有出现在我的案例中。我有一个 ASP.NET WebAPI 应用程序。我已经能够通过 Visual Studio Publish 将它发布到两个不同的开发服务器。在两台目标服务器上,我通过 Windows GUI 将 ASPNETCORE_ENVIRONMENT 环境变量设置为 Development,应用程序选择它,使用我的 appSettings.Development.json 设置,并按预期工作。

现在我将它部署到我的测试服务器。在该服务器上,我通过 Windows GUI 将 ASPNETCORE_ENVIRONMENT 环境变量设置为测试,但是当应用程序运行时,它总是显示托管环境:生产。我已经按照一篇文章的建议检查了我的 launchSettings.json 文件,但其中没有将环境变量设置为生产。由于 Production 是默认设置,我没有在任何地方设置该值的代码。

我成功部署到我的开发服务器和我失败的部署到我的测试服务器都是通过从 Bamboo 执行的 dotnet publish 完成的。我不知道为什么在我的测试服务器上运行的应用程序没有选择 ASPNETCORE_ENVIRONMENT 测试设置。

我在周末想到的其他一些细节可能相关,也可能不相关。

VS 发布到 Windows Server 2008 R2,调试版本,按预期工作。目标服务器将 ASPNETCORE_ENVIRONMENT 设置为 Development,应用程序日志报告 Hosting environment: Development,并且 appSettings.Development.json 设置生效。

VS 发布和 Bamboo 部署(通过 dotnet 发布)到 Windows Server 2016,调试版本,按预期工作。我在这台服务器上有两个站点实例。一种依赖于 ASPNETCORE_ENVIRONMENT 变量,该变量设置为 Development,并按预期工作。另一个通过 applicationHost.config 中的设置覆盖其应用程序池的环境变量。在这两种情况下,应用程序都会正确选择环境变量并反映正确的托管环境。

Bamboo 部署通过 dotnet 发布到 Windows Server 2012,发布版本,没有按预期工作。应用程序将托管环境报告为生产(默认),表明它无法获取我设置的环境变量。应用程序失败,因为它缺少 appSettings.Development.json 中的应用程序设置。

所以失败的场景是不同的服务器 O/S,但由于它适用于 2008 和 2016,我认为它适用于 2012 年。失败的场景是发布版本与调试版本,但我不会认为这会影响运行时行为重新配置。

我认为这不是 …

windows environment-variables .net-core

4
推荐指数
2
解决办法
1851
查看次数

serilog.settings.appsettings和文件翻转间隔问题

我正在使用SeriLog登录基于IdentityServer3的身份验证服务。我只是用serilog.sinks.file插件替换了serilog.sinks.literate插件,以便获得File插件提供的滚动文件功能。当在Startup中将File插件与以下配置代码一起使用时。 CS,它按我的预期工作。(我仅使用RolloverInterval.Minute进行测试。部署代码时,我将切换到RolloverInterval.Day。)

Log.Logger = new LoggerConfiguration()
.WriteTo.File("E:\\Site\\AuthSvc\\Trace.log", rollingInterval: RollingInterval.Minute, retainedFileCountLimit: 10)
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)

就像我说的那样,它可以按预期工作,每分钟创建一个新文件。

现在,我尝试使用serilog.settings.appsettings插件在appSettings中而不是在代码中管理所有配置。所以我将上面的代码更改为:

Log.Logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)

我在web.config appSettings中包含以下内容:

<add key="serilog:minimum-level" value="Debug"/>
<add key="serilog:using:File" value="Serilog.Sinks.File"/>
<add key="serilog:write-to:File.path" value="E:\Site\AuthSvc\Trace.log"/>
<add key="serilog:write-to:File.rollingInterval" value="RollingInterval.Minute"/>
<add key="serilog:write-to:File.retainedFileCountLimit" value="10"/>
Run Code Online (Sandbox Code Playgroud)

当我以上述配置运行服务时,出现错误消息“未找到请求的值'RollingInterval.Minute'”。任何RollingInterval值都会发生类似的错误。

如果我删除了最后两个appSettings,它可以正常工作。我是在做错什么,还是appSettings插件不支持文件接收器插件的滚动文件功能?

serilog

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