2017-09-11 156 views
0

我有一個ASP.NET Core 2.0應用程序,我可以使用用戶機密就好。但是,我無法在Azure WebJobs應用程序或基本的Windows控制檯應用程序(它們都是.NET 4.6.1)中使用它。我已經爲Microsoft.Extensions.Configuration.AddSecrets添加了nuget,並且AddUserSecrets方法在代碼中正在編譯好。Azure WebJobs是否支持用戶機密?

但是,我無法將用戶密碼添加到項目中。在ASP.Net Core 2.0應用程序上,項目上的右鍵單擊上下文菜單中沒有「管理用戶機密」選項。所以我嘗試從命令行使用dotnet用戶密碼(我已經在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」的封裝類型'DotnetCliTool'不支持項目'xxx'。 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,並將其複製到適合此控制檯應用程序的新創建的文件夾中,並正確拾取了用戶密碼。所以從使用的角度來看,它看起來可以正常工作。我的問題實際上是以一種方便的方式設置祕密。

回答

0

根據Microsoft.Extensions.SecretManager.Tools的依賴關係,可以發現該工具現在只支持net core,不支持.net 4.6。

enter image description here

此外,根據本article,你會發現這個工具只在開發環境中使用。

The most important point is you should never store passwords or other sensitive data in source code, and you shouldn't use production secrets in development and test mode.

如果你想在蔚藍webjobs使用它,我建議你可以考慮使用Azure Key Vault

The Secret Manager tool is used only in development. You can safeguard Azure test and production secrets with the Microsoft Azure Key Vault configuration provider. See Azure Key Vault configuration provider for more information.

此外,如果你仍然想使用Microsoft.Extensions.SecretManager,我們可以使用.NET的核心創造天藍webjobs。關於如何創建它,你可以參考這個answer