【问题标题】:Does Azure WebJobs support user secrets?Azure WebJobs 是否支持用户机密?
【发布时间】:2017-09-12 13:11:00
【问题描述】:

我有一个 ASP.NET Core 2.0 应用程序,我可以很好地使用用户机密。但是,我无法让它在 Azure WebJobs 应用程序或基本的 Windows 控制台应用程序(两者都是 .NET 4.6.1)中工作。我已经为 Microsoft.Extensions.Configuration.AddSecrets 添加了 nuget,并且 AddUserSecrets 方法在代码中编译得很好。

但是,我无法将用户密码添加到项目中。与 ASP.Net Core 2.0 应用程序一样,项目的右键上下文菜单上没有“管理用户机密”选项。所以我尝试从命令行使用 dotnet user-secrets(我已经在 ASP.NET Core 2.0 应用程序中成功使用过)。虽然我收到此错误,但它不起作用。

No executable found matching command "dotnet-user-secrets"

从阅读其他帖子看来,我需要 Microsoft.Extensions.SecretManager.Tools。我无法通过 nuget 添加它,因为我收到此错误:

所以我添加了:严重性代码描述项目文件行抑制状态 错误包“Microsoft.Extensions.SecretManager.Tools 2.0.0”具有项目“xxx”不支持的包类型“DotnetCliTool”。 0

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" />
  </ItemGroup>

到 csproj 并尝试恢复包。此时我得到另一个错误:

C:\Program Files\dotnet\sdk\2.0.0\NuGet.targets(102,5): error : Value cannot be null.\r [C:\...\xxx.csproj]
C:\Program Files\dotnet\sdk\2.0.0\NuGet.targets(102,5): error : Parameter name: key [C:\...\xxx]

所以现在我想知道 .NET 4.6.1 项目是否支持用户机密。如果是,我错过了什么?

编辑:我从 ASP.NET Core 2.0 应用程序中找到了 secrets.json,并将其复制到一个新创建的适合此控制台应用程序的文件夹中,并且正确获取了用户密码。因此,从使用的角度来看,它似乎可以正常工作。我遇到的问题实际上是以一种方便的方式设置秘密。

【问题讨论】:

    标签: c# azure-webjobs


    【解决方案1】:

    根据Microsoft.Extensions.SecretManager.Tools的依赖,可以发现该工具现在只支持net core,不支持.net 4.6。

    另外,根据article,你可以发现这个工具只用于开发环境。

    最重要的一点是你不应该在源代码中存储密码或其他敏感数据,你不应该在开发和测试模式下使用生产机密。

    如果你想在 azure webjobs 中使用它,我建议你可以考虑使用Azure Key Vault

    Secret Manager 工具仅用于开发。您可以使用 Microsoft Azure Key Vault 配置提供程序保护 Azure 测试和生产机密。有关详细信息,请参阅 Azure Key Vault 配置提供程序。

    此外,如果您仍想使用 Microsoft.Extensions.SecretManager,我们可以使用 .net core 创建 azure webjobs。关于如何创建它,你可以参考这个answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 2016-05-01
      • 2022-01-08
      • 2014-11-06
      • 2021-09-27
      相关资源
      最近更新 更多