2017-02-16 16 views
14

Khi tôi tạo ASP .NET Core Web -Ứng dụng mới, tôi có thể nhấp chuột phải vào dự án trong Visual Studio và tôi thấy một mục nhập ngữ cảnh có tên "Quản lý bí mật người dùng".Cách nhận "Quản lý bí mật người dùng" trong ứng dụng giao diện điều khiển .NET Core?

Khi tôi tạo Bảng điều khiển .NET Core mới -Ứng dụng, tôi không thấy mục nhập ngữ cảnh này.

Tuy nhiên, "Web" -Ứng dụng hiển thị dưới dạng ứng dụng "bảng điều khiển" trong cài đặt dự án. Có cách nào tôi có thể nhận được mục nhập menu ngữ cảnh này trong một ứng dụng giao diện điều khiển?

Trả lời

0

Cách nhận “Quản lý bí mật người dùng” trong ứng dụng giao diện điều khiển .NET Core?

Sử dụng Visual Studio 2015 Cộng đồng với bản cập nhật 3

  1. File -> New-> Project
  2. Chọn Console Application (NET Core)
  3. Nhấn tổ hợp phím CTRL + ALT + L
  4. Bấm vào dự án để nhận “Quản lý bí mật người dùng”, nó sẽ mở ra một tệp có tên secrets.json

và ở đâu bạn có thể nhập thủ công bí mật người dùng.

tôi đã có thể sử dụng dấu nhắc lệnh để thiết lập bí mật sử dụng:

c: \ Projects \ ConsoleApp2 \ src \ ConsoleApp2> DotNet sử dụng bí mật thiết lập BrainTree_sandbox: Merchant ID: 9rv9mhnb5gh7nnyx

3

Dường như họ chưa thêm (ít nhất là cho Visual Studio 2015) như một tùy chọn cho Console hoặc các ứng dụng DLL.

Bạn có thể sử dụng như một công việc xung quanh, nhưng làm như vậy nguy cơ của riêng bạn, nó sẽ lừa Visual Studio tin rằng dự án dll có khả năng Web là tốt.

Giả sử hệ điều hành Windows

  1. Open File Explorer để C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v{Version Number}\DotNetlưu ý: 14.0 là VS 2015, 15.0 là 2017 vv

  2. sao lưu các tập tin có tên Microsoft.DotNet.targets

  3. Thêm dòng này đến Microsoft.DotNet.targets bên cạnh khác ProjectCabability thẻ

    <ProjectCapability Include="DotNetCoreWeb" />

  4. Lưu tệp và tải và tải lại dự án/studio trực quan khởi động lại.

Bạn cũng có thể cần phải xóa tập tin .suo của bạn và/hoặc thư mục .vs bạn

Bây giờ bạn sẽ thấy menu ngữ cảnh. Nó cũng thay đổi biểu tượng không may. Nó có vẻ xây dựng tốt, nhưng điều này là khá chưa được kiểm tra rất nghiêm túc, sử dụng có nguy cơ của riêng bạn.

0

Đã xảy ra sự cố mở liên quan đến điều này trên GitHub.

Những gì bạn có thể làm cho đến khi giải quyết, là sử dụng phương pháp dòng lệnh như được mô tả trên Visual Studio Code or Command Line: Installing the Secret Manager tool. Điều này không có nghĩa là bạn nhận được mục trình đơn ngữ cảnh của mình nhưng nó vẫn hoạt động.

Một lưu ý, tài liệu tham chiếu đến <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.1" /> trong khi phiên bản 2.0.0 đã hết và có thể được sử dụng.

3

Đối với tôi, tôi đã có thêm:

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

Sau đó thiết lập

<PropertyGroup> 
    <UserSecretsId>a random user id: manually add</UserSecretsId> 
</PropertyGroup> 

di chuyển đến thư mục dự án di dân trong PMC và thêm một chìa khóa: giá trị như:

dotnet user-secrets set "ConnectionStrings:DefaultConnection" "xxxxx" 
0
  1. Nhấp chuột phải vào dự án và nhấp vào chỉnh sửa tệp csproj.
  2. Trên dòng đầu tiên thay thế <Project Sdk="Microsoft.NET.Sdk"> bằng <Project Sdk="Microsoft.NET.Sdk.Web"> và lưu.

Bây giờ bạn có thể truy cập để quản lý menu bí mật người dùng, chỉnh sửa và lưu. Sau đó, bạn phải khôi phục dòng đầu tiên của tệp csproj về các giá trị mặc định của nó thành một ứng dụng giao diện điều khiển.

Thật ngu ngốc nhưng nó hoạt động. Hãy nhớ thay thế thuộc tính usersecretsid cho mọi dự án hoặc sẽ chỉ có một secrets.json cho tất cả các dự án của bạn.

5

"Quản lý bí mật người dùng" từ một nhấp chuột phải chỉ có sẵn trong các dự án web.

Có một quá trình hơi khác nhau cho giao diện điều khiển ứng dụng

Nó đòi hỏi tay gõ các yếu tố cần thiết vào tập tin csproj của bạn sau đó thêm bí mật thông qua việc PMC

tôi đã vạch ra quá trình mà làm việc cho tôi trong hiện tại của tôi bước dự án bước trong bài viết trên blog này:

https://medium.com/@granthair5/how-to-add-and-use-user-secrets-to-a-net-core-console-app-a0f169a8713f

tl; dr

Bước 1

Dự án nhấp chuột phải và nhấn chỉnh sửa projectName.csproj

Bước 2

thêm <UserSecretsId>Insert New Guid Here</UserSecretsId> vào csproj dưới TargetFramework

thêm <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0"/> trong mục Nhóm trong csproj

Bước 3

mở PowerShell (admin) cd vào dự án thư mục và

nhập dotnet user-secrets set YourSecretName "YourSecretContent"

Điều này sẽ tạo ra một file secrets.json trong:

%APPDATA%\microsoft\UserSecrets\<userSecretsId>\secrets.json 

đâu userSecretsId = Guid mới bạn đã tạo cho csproj bạn

Bước 4

mở bí mật .json và chỉnh sửa để trông giống như thế này

{ 
"YourClassName":{ 
    "Secret1":"Secret1 Content", 
    "Secret2":"Secret2 Content" 
    } 
} 

Bằng cách thêm tên của lớp học, bạn có thể ràng buộc bí mật của bạn với một đối tượng sẽ được sử dụng.

Tạo một POCO cơ bản có cùng tên mà bạn vừa sử dụng trong JSON của mình.

namespace YourNamespace 
{ 
    public class YourClassName 
    { 
     public string Secret1 { get; set; } 
     public string Secret2 { get; set; } 
    } 
} 

Bước 5

Thêm Microsoft.Extensions.Configuration.UserSecrets NuGet gói để dự

Thêm

var builder = new ConfigurationBuilder() 
.SetBasePath(Directory.GetCurrentDirectory()) 
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) 
.AddUserSecrets<YourClassName>() 
.AddEnvironmentVariables(); 

&

var services = new ServiceCollection() 
.Configure<YourClassName>(Configuration.GetSection(nameof(YourClassName))) 
.AddOptions() 
.BuildServiceProvider(); 

services.GetService<NameOfClass>(); 

Vào tệp Program.cs của bạn.

Sau đó tiêm IOptions<YourClassName> vào constructor của lớp học của bạn

private readonly YourClassName _secrets; 

public SecretConsumer(IOptions<YourClassName> secrets) 
{ 
    _secrets = secrets.Value; 
} 

Sau đó truy cập bí mật bằng cách sử dụng _secrets.Secret1;

+0

Đây là phương pháp mà chúng ta sử dụng quá và nó hoạt động độc đáo. Nó có thêm lợi ích là cách tiếp cận tương thích nhất với sửa chữa (dự kiến) mà đội VS cuối cùng sẽ thực hiện (giả sử nó sẽ hoạt động tương tự như đối với các dự án Web). –

Các vấn đề liên quan