Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9547

Azure の静的サイトをホストする Azure Static Web Apps が Blazor と C# の Functions サポートしたらしいので試してみた

$
0
0

まだプレビューのサービスですが、期待大の Azure Static Web Apps で Blazor と C# の関数がサポートされました。以下のブログでアナウンスされてます。

Azure Static Web Apps with .NET and Blazor

Microsoft MVP の三宅さんのツイートのトップにも、このサービス関連のスライドがピン止めされてますね!

Azure Static Web Apps の更新情報を確認してみると Python もサポートされていたりして着々と開発が進んでるみたいです。

Blazor + C# の Functions の試し方

最初に紹介したブログに書いてあるのですが、若干気を付ける点があったので書いておこうと思います。
ブログにある GitHub のリポジトリを自分のアカウントにコピーして始めるのですが、これをクローンして Api プロジェクトと Client プロジェクトをローカルで実行して Client の Fetch data のページを開くと CORS のエラーが出ます。

image.png

これは、デフォルトでローカル開発用の設定ファイルの local.settings.json.gitignoreに入ってるのでリポジトリに含まれていないためです。なので以下の内容の local.settings.jsonを Api プロジェクトに追加することでエラー無しでローカルで実行できます。

local.settings.json
{"Values":{},"Host":{"CORS":"*"}}

これを追加して実行すると以下のようにローカルで動くようになります。

image.png

Client プロジェクトの Program.csを見てみると builder.Configuration["BaseAddress"] ?? builder.HostEnvironment.BaseAddressという感じで設定に BaseAddressという設定があったら HttpClientBaseAddressに設定しています。設定にない場合はホストの BaseAddressを使うようになっています。

Program.cs
usingSystem;usingSystem.Net.Http;usingSystem.Threading.Tasks;usingMicrosoft.AspNetCore.Components.WebAssembly.Hosting;usingMicrosoft.Extensions.DependencyInjection;namespaceBlazorApp.Client{publicclassProgram{publicstaticasyncTaskMain(string[]args){varbuilder=WebAssemblyHostBuilder.CreateDefault(args);builder.RootComponents.Add<App>("app");varbaseAddress=builder.Configuration["BaseAddress"]??builder.HostEnvironment.BaseAddress;builder.Services.AddScoped(_=>newHttpClient{BaseAddress=newUri(baseAddress)});awaitbuilder.Build().RunAsync();}}}

Blazor WebAssembly の開発中のみ有効な設定は wwwroot/appsettings.Development.jsonに書いてあって、ここに BaseAddresshttp://localhost:7071/であると書いてあります。

appsettings.Development.json
{"BaseAddress":"http://localhost:7071/"}

これでローカルの時だけローカルで実行している Azure Functions の方を見に行くようになっています。Azure Static Web Apps にデプロイしたときは、関数は同じホストにいるので同じホストの /api/関数名を見に行くようになっています。なるほどね。

デプロイして実行

デプロイから実行するのは本当にトラブルがないです。routes.jsonもリポジトリに入ってるし。フレームワークの中の選択肢に Blazor も入ってるし。

image.png

既存のプロジェクトがあって、それに合わせるとなるとちょっとカスタム頑張らないとですが、そうじゃなければ Static Web Apps が想定しているものに合わせるのがいいですね。

デプロイが完了すると紐づけた GitHub のリポジトリに自動で GitHub Actions が構成されて動きます。

image.png

動き終わるとちゃんと表示されました。

image.png

PullRequest の時に確認用の環境をたててくれたりとかは試してませんが、生成された GitHub Actions を見る限り対応してくれてそうでした。

まとめ

ということで、ローカル実行を試してみようと思ったら 'local.settings.json` を作っておかないと CORS のエラーになってしまいますが、そこさえ気を付けていれば割と簡単にローカル実行から Static Web Apps へのデプロイまでを体験するのは、そんなに難しくないと感じました。

今のところ一番 GA が待ち遠しいサービスなので期待大ですね!


Viewing all articles
Browse latest Browse all 9547

Trending Articles