質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
blazor

Blazorは、マイクロソフトが開発している.NETベースのWebアプリフレームワークです。C#でフロントエンドもバックエンドも一貫して書くことが可能。クライアントサイド(WebAssembly)とサーバーサイド形式のホスティングモデルがあります。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

0回答

1174閲覧

VisualStudio2019(.NET5.0/C#) KeyVaultで接続文字列を獲得する方法

antiwebhook

総合スコア7

blazor

Blazorは、マイクロソフトが開発している.NETベースのWebアプリフレームワークです。C#でフロントエンドもバックエンドも一貫して書くことが可能。クライアントサイド(WebAssembly)とサーバーサイド形式のホスティングモデルがあります。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

0クリップ

投稿2022/01/14 06:08

編集2022/01/18 00:24

前提条件

環境:VisualStudio2019 Ver16.11.5
アプリ種類:Blazor Serverアプリケーション
言語:C#
データベース:Azure SQL DataBase
データベース接続:Azure Keyvault

Visual StudioとKeyvaultの構成設定(接続済サービスの設定)は終わっています。

やりたいこと

Azure KeyVaultを経由して接続文字列を獲得したい。

わからないこと

①KeyVaultからの情報を得て用いる方法

Blazorプロジェクト

1@page "/keyvault" 2 3<h1>@keyvault</h1> 4//変数keyvaultを画面に表示 5 6@code { 7 private int keyvault = ""; ←ここにKeyvaultから得た接続情報を格納したい 8}

上記コードのようにkeyvaultから接続情報を獲得し、変数に格納する方法が知りたいです。
他サイトの真似事をしてみましたが、コードに波線が出て動作しませんでした。

②program.csに付け加えるべき内容を知りたい
色々な動画やサイトを見ましたが人それぞれ追加する内容や箇所が異なっており余計に混乱してしまいました。しまいには接続済みサービスの設定だけで良いと書かれているものもあり、追加する情報は必須なのか、任意なのかを教えていただけないでしょうか。

私の場合のprogram.csは以下です。

Program.cs

1using Microsoft.AspNetCore.Hosting; 2using Microsoft.Extensions.Configuration; 3using Microsoft.Extensions.Hosting; 4using Microsoft.Extensions.Logging; 5using System; 6using System.Collections.Generic; 7using System.Linq; 8using System.Threading.Tasks; 9using Azure.Identity; 10 11namespace WebApplication1 12{ 13 public class Program 14 { 15 public static void Main(string[] args) 16 { 17 CreateHostBuilder(args).Build().Run(); 18 } 19 20 public static IHostBuilder CreateHostBuilder(string[] args) => 21 Host.CreateDefaultBuilder(args) 22.ConfigureAppConfiguration((context, config) => 23{ 24 var keyVaultEndpoint = new Uri(Environment.GetEnvironmentVariable("VaultUri")); 25 config.AddAzureKeyVault(keyVaultEndpoint, new DefaultAzureCredential()); 26}) 27 .ConfigureWebHostDefaults(webBuilder => 28 { 29 webBuilder.UseStartup<Startup>(); 30 }); 31 } 32}

接続先のkeyVaultのURLが環境変数として"VaultUri"に設定されているので、変数keyVaultEndpointに欲しい情報があるような気がするのですが、どうなのでしょうか?
※実際にウォッチで中身を見てみましたが中身は見れませんでした。
→(現在のコンテキストにkeyVaultEndpointは存在しません)

参考にしたサイト

https://news.mynavi.jp/techplus/article/zeroazure-23/
[3]プログラムの修正(Webアプリケーション起動用ファイル)
の箇所からわけがわからなくなってしまいました。

プロジェクト種類が違うので、program.csの中身も異なっておりどう書き換えていいかわからない状態です。

https://youtu.be/S7EPrlpPqXw
こちらの動画ではKeyVaultを用いて情報を取得する際にConfigrationManagerというものを使っているようですが、自分のプロジェクトにはそれがありませんでした。
追記:.NET5.0ではConfigrationManagerは使えないといった記事を見つけました。

とりあえず試したこと

program.csに以下のクラスを追加して、他の箇所から呼び出そうとしてみた。

program.cs

1 public class KeyVaultTest 2 { 3 public static void main(string[] args) 4 { 5 var key = new Uri(Environment.GetEnvironmentVariable("VaultUri")); 6 } 7 }

testプログラム

1<h1>@testkey</h1> 2//変数keyvaultを画面に表示 3 4@code { 5 public void Connect1() 6 { 7 var testkey = WebApplication1.KeyVaultTest.main.key; 8 } 9}

実行結果 エラー
「.KeyVaultTest.mainはメソッドです。これは特定のコンテンツでは無効になります。」

素人質問で色々とおかしなところがあると思いますが、ご教授いただけますと幸いです。
追加情報等必要でしたらなんなりとお申しつけください、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

antiwebhook

2022/01/17 10:17

https://qiita.com/Hikaruru_g/items/2e006cc685341ec866cf 上記サイトの真似をして、public static void Main(string[] args)内にねじ込んでみました。 結果、以下のエラーが発生しました。 「型または名前空間の名前'AzureServiceTokenProvider'が見つかりませんでした(usingディレクティブまたはアセンブリ参照が指定されていることを確認してください) 「現在のコンテキストに'builder'という名前は存在しません」 難しい…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問